ステートメント&関数説明書

iOS依存関数はこちら
X68互換&便利&カード関数はこちら
音楽関数はこちら
全ステートメント/関数/定数/変数名リストはこちら

最初に

X-BASIC'の概要についてはこちら

X-BASICは見た目上C言語に似ていますが、動作自体は異なる部分が多々あります。
Cに慣れていると間違えやすいので、ご注意ください。

間違いやすい項目:
  X-BASIC' C言語
等号 = ==
{} if/dim代入のみ ローカルブロック生成
return ()が必須 ()はなくても良い
16進表記 &h 0x
真値 -1 1

以下の説明において、「式」とは、定数、変数、およびその組み合わせによる演算の結果を意味します。
関数を含めることも出来ます。

定数(式)は、1つの固定の数値や文字列、またはその演算式の結果を意味します。
enumステートメントを使うとint定数、fenumステートメントを使うとfloat定数に名称をつけることも出来ます。
定数式には演算子を含めることが出来ますが、関数は使えません。
もちろん変数は含んではいけません。


変数や関数(引数および戻り値)には以下の4種類の型があります。
名称内容範囲補足
char符号なし8ビット整数 0~255
int 符号あり32ビット整数 -2147483648~+2147483647 char/intをまとめて整数と呼ぶこともあります。
整数値は10進の他、接頭辞を付けることで他の進数や1文字でも指定可能です。
注)64ビット機上でもX-BASICのintは32ビットです。
&h16進数
&o8進数
&b2進数
'?' 'でくくられる任意の1文字コード(すべての文字が指定可能)
文字コードは標準ではUTF8ですが、強制SHIFT-JISモード時はSHIFT-JISとなります。
float64ビット浮動小数点±2.225074*10-308~1.797693*10+308

有効桁数は約15桁
浮動小数点なので、丸め誤差が発生することがある
数字列中に小数点('.')/e/E、または後ろに#が付いている場合、floatと見なします。
「例」
 0.1
 1.0#
 3e10
 4.012E-10

X-BASICのfloatはC言語のdoubleに相当します
str文字列"でくくられる任意の文字群

格納できる最大バイト数は設定により可変
デフォルトでは255バイト(終端コードを除く)
文字列の後ろには終端コードとして&h00が格納されます。
従って、文字列にchr$(0)を含めることは出来ません。
(バイト列に0を入れる必要があるときはdim charを使います。)
空文字列 長さ0の文字列=""。
システム変数NULL$でも代入できます。
C言語のNULLとは意味が違うので注意してください。
文字列内1バイト指定 文字列中の任意の1バイトを得る/更新する場合は、[ ]で位置を指定します。
位置は0~最大文字列長-1で指定できますが、現在の文字列長を超える指定をした場合、読み出しにおいては内容不定、書き込みは無効になります。

「例」文字列の中の1バイトを変更する
s[0]='A'
補足)X-BASIC/68ではstr 変数名[len]で文字列変数ごとに長さを設定出来ましたが、iOS版では設定できません(ぺけ-BASICも)。 記述はできますが無視され、設定の最大文字列長に従います。
配列
    各型が利用でき、10次元まで設定可能です。
    詳しくは後述のステートメント参照。


変数宣言はプログラム中、任意の場所で行う事が出来ます。
(プログラムまたは関数先頭にある必要はありません。)

随時内容が変更できる変数に対して、即値記述のことを定数と呼びます。
定数上はcharとintの区別はありません。

名前について

変数/配列または関数の名前には以下の文字が利用できます。

    英数字
    _(アンダーバー)
    $(ドルマーク)

英大文字小文字は区別されます。
先頭に数字は使えません。
先頭が$で始まる変数名はシステムで予約していますので、使わないでください。

名前の長さは、最大文字列長の設定にかかわらず、255バイトまでです。
(ASCII文字だけなので、バイト数=文字数です)。

関数やステートメントと同じ名前は使えません。
また、以下の名称はシステムで予約されており、使うことができません。
    gosub,exit


関数とローカル変数

X-BASICではサブルーチンはすべて関数として記述します。
システムが用意している関数を「外部関数」「システム関数」、
ユーザーがプログラム中に記述した関数を「内部関数」「ユーザー関数」と呼び分けることもあります。

X-BASICのプログラムは大きく分けて、RUNで実行がかかるプログラム先頭からのグローバル部と、
内部関数群となるローカル部の2つから構成されます。
ローカル部は不要なら省略できますが、グローバル部は省略できません。
内部関数は実行時に自動的に登録されるため、予め宣言しておく必要はありません。
内部関数は必ずendの次の行以降に記述します。

実行→  グローバル部(プログラム先頭)
    ここで宣言した変数はすべてグローバル変数になる

    ~処理~

    end
    // ここ以降はローカル部=関数の記述部となる
    func name1(param1;int,param2;str)
    ~
    endfunc
    //
    func name2()
    ~
    endfunc


(内部)関数は、以下のように記述します。
[ ]内は省略可能な項目です。
...は以下同様に続くことを示します。

    func [関数の型] 関数名([引数[;引数の型],...])
      ~処理~
     return[(戻り値)]
    endfunc

関数名と ( の間にスペースを空けてはいけません。
関数の型とは戻り値の型です。省略した場合intと見なされます。
しかし、省略しないことを推奨します。

戻り値の必要無い関数の場合はreturnそのもの、または戻り値を省略します。
逆に言えば、型指定があるときはreturn(戻り値)が必須です。
戻り値のあるreturn文の()は必須です(C言語のように省略できません)。

「例」
    // 戻り値のない関数(Cで言うところのvoid相当)
    func name1(~)
      ~処理~
      if ~ then return
      ~処理~
      // 戻り値がないので末尾のreturn不要
    endfunc


    // 戻り値のある関数
    func float name2(~)
      ~処理~
      if ~ then return(1.0)
      ~処理~
      // 戻り値がある場合は、末尾のreturn必須
      return(2.0)
    endfunc

//------------------------------

引数は、引数名と、';'に続けてその型を列記します。
型を省略した場合はintと見なされます(が、省略しないことを推奨します)。
引数は最大10個まで持つことができます。
(外部関数は12個まで。)

引数が1つもない場合は()だけ記述します。

    「例」
    func name1(param1;int,param2;str)
    ~
    endfunc
    
    
    func int name2():/* 引数なしの時は()のみ記述
    ~
    endfunc


関数の引数に配列を渡す事も出来ます。
(配列については後述します。)

    「例」
    dim str ss(4,1)={
        "s01","s02","s03","s04","s05",
        "s11","s12","s13","s14","s15"
    }
    testFunc(4,ss)
    end
    //
    func testFunc(n;int,s(4,1);str)
    print "n=";n
    int i,j
    for i=0 to 1
      for j=0 to 4
        print "s(";j;",";i;")=";s(j,i)
      next
    next
    endfunc

funcで配列を引数にする時は、「引数配列名();型」と記述します。
システムの制約から、この引数配列の要素数指定にはenum定数は使えません。

関数側で配列要素数を指定した場合、呼び出し側の配列要素数と一致していなければなりません。
関数側では要素数の指定を省略することも出来、この場合、呼び出し側の配列要素数が自動設定されます(拡張配列)。
次元数は変更できません。

    「例」
    dim int a(10,5),b(20,15)
    f2(a)
    f2(b)
    ~
    end

    func f2(n(,);int)
        // f2(a)で呼び出されたときはn(10, 5)で設定され、
        // f2(b)で呼び出されたときはn(20,15)で設定される
        // 以下の文で見るとよくわかる
        int size1,all
        all=sizeofArray(n,size1)
        print "1要素=";size1;"/全要素数=";all
    endfunc

次元を知るため、','は省略できません。
なお、渡された配列内を変更すると、呼び出し側の配列も変更されます。

//------------------------------

関数内ではローカル変数を使うことが出来ます。

ローカル変数名はグローバル変数と重複してもかまいません。
その場合グローバル変数が隠蔽されます。
関数の引数もローカル変数扱いになります。

    「例」
    int i=1     :/* グローバル変数
    print "i=";i:/* i=1
    f0()
    print "i=";i:/* i=1
    end
    //
    func f0()
        print "i=";i:/* i=1 ; ここで参照されるのはグローバル変数
        int i=2     :/* ローカル変数宣言
        print "i=";i:/* i=2
    endfunc

X-BASICでは内部関数でポインターを扱う事は出来ませんので、
2つ以上の値を返したい場合は、グローバル変数を使う必要があります。


配列はローカル部でのみ、要素数を変数で指定できます。
これを可変長配列と呼びます(拡張配列)。

    「例」
    func f1(n;int)
      dim int a(n)
      ~
    endfunc

なお、グローバルにおける配列宣言は必ず定数でなければなりません。

補足:
関数は再帰呼び出しが可能ですが、あまり深い呼び出しを行うとエラーが発生します。

演算子

X-BASIC'には以下の演算子が用意されています。

各演算子は、変数または定数の型によって利用できるものが決まっています。
英字演算子はすべて小文字です。
2項演算子
算術演算子 int/char float str  enumで()が必須
+ 文字列は+演算子で結合できます
- ×  
/ ×  
* ×  
mod × 剰余(余り)
\ × 整数割り算
(表示フォントによって半角の¥または\になります)

論理・ビット演算子 int/char float str  enumで()が必須
and × 論理積
or × 論理和
xor × 排他的論理和
shl × shift left(C言語の<<)
第2項が負数の場合は逆シフトになる
shr × shift right(C言語の>>)
第2項が負数の場合は逆シフトになる

関係演算子 int/char float str  enumで()が必須
<  
>  
<=  
>=  
= 比較一致
<> 比較不一致
文字列も数値の比較に使われるものと同じ関係演算子で比較可能です。
文字列は先頭から1バイトずつ比較され、両者が全く同じ場合は等しくなります。
1バイトでも違った場合は、異なったバイトの大きい方が文字列が大きいと判断されます。
一方のバイト長が短くて比較が途中で終わった場合は、短いほうが小さいと判断されます。
UTF8では文字数からバイト数が特定できないので、比較結果が予想とは異なる場合があります。
また、文字列比較においては空白も意味を持つので注意。

単項演算子
  int/char float str  enumで()が必須
not × 否定(論理・ビット演算子;全ビット反転)
- × 負号
△=floatはint化(整数以下切り捨て)して実行


演算子優先順位は以下のとおりです。
  1. 括弧で囲まれたもの
  2. 関数
  3. 符号(+/-)
  4. * /
  5. \
  6. mod
  7. + -
  8. shr shl
  9. 関係演算子
  10. not
  11. and
  12. or
  13. xor

真偽値
関係演算子は真偽値を返します。真偽値の値は定数としても用意されています。
YES
true
-1
(Cとは異なる)
NO
false
0

なお、X-BASICにおける真偽は、以下のように判定されます。
=0
<>0
これはC言語と同じです。


ステートメント
[ ]内は省略可能な項目。
...は以下同様に続くことを示します。
ステートメントはすべて小文字です。

// 変数宣言

ステートメント名 char
書式 char 変数名[=初期化式][,変数[=初期化式],・・・・]
機能 char型 変数を宣言する。
同時に初期値も設定できる。
char c      :// 宣言のみ
char c='A'  :// 初期値 'A' 代入付き宣言
char d=c+1  :// 初期化式では、宣言済みの別変数も参照できる

ステートメント名 int
書式 int 変数名[=初期化式][,変数[=初期化式],・・・・]
機能 int型 変数を宣言する。
同時に初期値も設定できる。
int i
int j=0
int k=i+j

ステートメント名 float
書式 float 変数名[=初期化式][,変数[=初期化式],・・・・]
機能 float型 変数を宣言する。
同時に初期値も設定できる。
float f1=3.14
float f2=pi(1)  :// 初期化で関数による代入も出来る
float f3=f1+f2

ステートメント名 str
書式 str 変数名 [=初期化式][,変数[=初期化式],・・・・]
機能 str型 変数を宣言する。
同時に初期値も設定できる。
str s1
str s2="String"
str s3="3rd "+s2

ステートメント名 dim
書式 dim 型 変数名(添字の最大値[,添字の最大値・・・]) = {要素1の初期値,要素2の初期値,・・・}
機能 配列を宣言する。 型はchar/int/float/strで指定する。
要素は (0)~(添字の最大値) までが使える。C言語とは最大数が違うので注意。
総要素数はいずれの型でも最大65535まで(各次元で65535ではなく、全次元を通して65535まで)。 超えてもオーバーフローするだけでエラーは出ない。
最大10次元まで使える。
dim int a(10)           :// 11個のint型1次元配列を確保する。各要素の初期値は0
dim char b(10)={0,1,2}  :// 要素数を超えない範囲で初期値を与える。初期値指定がない部分は0になる
dim str  c(3)           :// str型配列の初期値は空文字列
c={"A","B","C","D"}     :// 宣言の後、任意の場所で代入出来る。
c={"A",
   "B","C",         // 複数行にまたがって記述することも出来る
   "D"
}

dim float x(3,2)    :// 2次元配列;1次元目要素数3+1、2次元目要素数2+1
// 多次元配列への代入の場合も、すべて一組の{}の中に記述する
// (C言語のように、次元別に{}で区切る必要はない)
x={10,20,30,40,     // x(0,0)~x(3,0)に格納
   11,21,31,41,     // x(0,1)~x(3,1)
   12,22,32,42      // x(0,2)~x(3,2)
}           :// 格納順は1次元目から順(C言語とは記述順が逆になるので注意)
補足 dimの要素代入中にコメントを記述する場合は、':'でマルチステートメントにしてはいけない。
(なぜなら、ここはマルチステートメントが置ける場所ではないから。)
「間違い」
dim str pai(3)={            :// コメント
     "一二三四五六七八九"   :// コメント
}

「正解」
dim str pai(3)={            // コメント
     "一二三四五六七八九"   // コメント
}

ステートメント名 enum/endenum
書式 enum
定数名1[=int値]
定数名2[=int値]
...
endenum
機能 連続値を持つ整数の定数を定義する。
値を指定した場合はその値を、省略した場合は前の値+1を設定する。
初期値を省略した場合は0。
intで設定した変数はcase値には使えないが、enum値は定数なので使うことができる。
値の指定には整数定数の他、定義済みのenum値、それらを演算した結果が指定できる。
ただし、演算子として以下のものを使う場合は、1つの式づつ()で括る必要があります。   
()でくくる必要がある演算子(内部で整数化する演算子)
\ mod shr shl = <> < > <= >= and or xor
関数や変数は指定できない。
1行で1つの定義を行う。C言語と異なり、連続定義する場合も','を記述する必要はない。
当然ながら、定数なので後から変更することはできない。
enum
    CONST1  // 省略時の初期値は0
    CONST2
endenum
// CONST1=0,CONST2=CONST1+1=1となる

enum
    CONST1=10
    CONST2
endenum
// CONST1=10,CONST2=CONST1+1=11となる

enum
    CONST1=1
    CONST2=CONST1*10    // 定義済み定数の参照および演算子は使える
endenum
// CONST1=1,CONST2=CONST1*10=10となる

int a=5
enum
    CONST1=bit(0)   // エラー;関数は使えない
    CONST2=a*10     // エラー;変数は参照できない
endenum

case CONST1 // OK
case a      // エラー;変数はcase値に使えない
補足 enum値は本体のコンパイル前に登録されるため、if文の中に記述しても常に定義される。
if val(basicVersion$)<=3.0 then {
    // v3.0より上でも常に定義される
    enum
        CONST1
        CONST2
    endenum
}
注意 システムの制約から、enum値を関数の配列引数の要素サイズ指定に記述することはできません。
「例」
enum
  WW=3
endenum
〜
func f(masu(WW,WW);int):// エラー発生

ステートメント名 fenum/endenum
書式 fenum
定数名1[=float値]
定数名2[=float値]
...
endenum:// fenumも閉じはendenum
機能 (連続値を持つ)実数の定数を定義する。
値を指定した場合はその値を、省略した場合は前の値+1.0を設定する。
初期値を省略した場合は0.0。
値の指定には実数定数の他、定義済みのfenum値、それらを演算した結果が指定できる。
ただし、関数や変数は指定できない。
1行で1つの定義を行う。
定数なので、当然後から変更することはできない。
fenum
    FCONST1=3.141592
    FCONST2
endenum
// FCONST1=3.141592,FCONST2=FCONST1+1.0=4.141592となる

fenum
    FCONST1=10.10
    FCONST2=FCONST1*10    // 定義済み定数の参照および演算子は使える
endenum
// FCONST1=10.10,FCONST2=FCONST1*10=1010.0となる
補足 fenum値は本体のコンパイル前に登録されるため、if文の中に記述しても常に定義される。


// 制御構文

ステートメント名 fornext
書式
for int変数=開始値 to 終了値
    ~処理~
next
機能
int変数を開始値から終了値まで+1ずつ増加させながらループする(増分を変更する構文はない)。
変数はint型以外使えないので注意(charもだめ)。

終了値<開始値の時はループは実行されない。
int i
for i=0 to 5
  print "i=";i;","; :// i=0,1,2,3,4,5, と表示される
next
print
補足 ループ終了時のint変数の値は、終了値+1となる。
注意
forとnextは常に1:1で対応する。
旧MS系BASICのように、nextの後に複数の変数名を列記することで、
複数のforを1つのnextで受けることは出来ない。 (nextの後に変数名を記述してはいけない。)

ステートメント名 repeatuntil
書式
repeat
    ~処理~
until 終了条件式
機能
終了条件式が真になるまで、処理を繰り返す。
条件式がループ末尾にあるので、処理は最低1回は実行される。
i=0
repeat
  print "i=";i;","; :// i=0,1,2,3,4,5, と表示される
  i=i+1
until i=5+1     :// i=5+1になったら終了する
print

ステートメント名 whileendwhile
書式
while 条件式
    ~処理~
endwhile
機能
条件式が真の間、処理を繰り返す。
条件式が最初にあるので、処理は1回も実行されないこともある。
「例1」
i=0
while i<5+1     :// i<5+1の間ループする
  print "i=";i;","; :// i=0,1,2,3,4,5, と表示される
  i=i+1
endwhile
print

「例2」
i=10
while i<5+1      :// このループは実行されない
  print "i=";i;",";
  i=i+1
endwhile
// すぐにここに飛んでくる

以上3構文をフローチャートで図示すると、以下のようになる。
 


ステートメント名 switchendswitch/case/default
書式
switch 式
case 定数1
    処理1
    [break]
case 定数2
    処理2
    [break]
    ・
    ・
[default[: 処理n]]
endswitch
機能
式の結果、定数値別に処理を実行する。
整数定数と文字列で使うことが出来る。
これを「数値型switch」および「文字列型switch」と呼ぶ。

「数値型switch」のcase値にはenum値を含む整数定数が、
「文字列型switch」のcaseにはstr定数が使える。
変数や式は使えない。

式がchar/floatを含む場合、自動的にintに変換される。
従って、数値型switchでは、式の(結果として期待する)型にかかわらず、case値は整数値でなくてはならない。

文字列の場合、スペース未満の文字コードを持つの文字を含めることは出来ない

処理の中にbreakを記述すると、そこでendswitchに飛ぶ。
式の結果がどのcaseにもあてはまらないとき、defaultへ飛ぶ。
defaultは最後のcase文の下に記述する必要がある(C言語では配置は自由だが、X-BASICには制約がある)。

C言語とは違い、case 値/defaultの後ろに':'は必須ではない。
(':'を記述すると、マルチステートメントと見なされる。)

1つのswitch~endswitchの中には、最大256個のcaseを置くことが出来る。
1つのswitch~endswitchの中では、defaultは1つしか置けない。
「例1」数値型switch
int i
for i=0 to 5
  switch i
    case 0      :// ここはi=0の時だけ飛んでくる
      print "0"
      break
    case 1
    case 2      :// ここはi=1と2の時処理される
      print "1/2"
      break

    default     :// iが上記以外の時飛んでくる
      print "その他"
      break
  endswitch
next


「例2」文字列型switch
str s
input "文字列=";s
// dim str menues(3)={"A","BC",DEF","GHI"}
// s=menues(selectMenu("文字列",menues))
switch s
  case "A"      :// ここはs="A"の時だけ飛んでくる
    print "s = A"
    break
  case "BC"
  case "DEF"    :// ここはs="BC"または"DEF"のとき処理される
    print s;"<"
    break

  default       :// sが上記以外の時飛んでくる
    print s
    break
endswitch

ステートメント名 continue
書式 continue
機能 現在実行している階層(ネスト)のループの条件式に飛ぶ。
for i=0 to 10
    if i>=5 then continue
    print "i=";i    :// i>=5になったら、ここは実行されない
next
注意 switch構文の中では記述できない(C言語とは違う)。

ステートメント名 break
書式 break
機能 現在実行している階層(ネスト)のループまたはswitchから抜ける。
for i=0 to 10
    if i=5 then break   :// i=5になったら、forループを終了する
    print "i=";i
next

ステートメント名 if/then/else
書式 if 条件式 then 真時処理 else 偽時処理
機能 条件式が真ならばthen以降の真時処理を、偽ならelse以降の偽時処理を実行する。
例に示す4つのタイプがある。
「例1」1行で記述する。elseなし
if a=1 then print "a=1"

「例2」1行で記述する。elseあり
if a=1 then print "a=1" else print "a<>1"

注意)else以降を別行にしてはいけない
×  if a=1 then print "a=1"
    else print "a<>1"

「例3」真時処理を複数行で記述する
if a=1 then {
    print "a=1"
    ~処理~
}

「例4」真/偽時処理ともに複数行で記述する
if a=1 then {
    print "a=1"
    ~処理~
} else {
    print "a<>1"
    ~処理~
}

ステートメント名 label
書式 label "ラベル名"
機能 gotoの飛び先となるラベルを宣言する。
ラベル名には任意の文字が使える。
注意
ラベルは記述位置ではなく、その行の先頭に対して設定される。
従って、
    label "A":print "label A"
    print "label A":label "A"
この2つの記述は、同じ意味になる。

ステートメント名 goto
書式 goto "ラベル"
機能 ラベルに飛ぶ。
グローバルから関数内、および関数間を超えて飛ぶことは出来ない。
「例1」
for i=0 to 10
  for j=0 to 10
    if i=5 and j=5 then goto *loopout:// 2つのforループを一気に抜ける
  next
next
*loopout

「例2」
switch n
    case 1
      print "1"
      goto "L1"
    case 2
      print "2"
      goto "L1"
    default
      print "その他"
    label "L1"
      ~共通処理~
      break
endswitch
補足goto は不必要に多用すべきではない。

ステートメント名 funcendfunc / return()
書式
func [関数の型] 関数名([引数;引数の型,・・・])
    return[(戻り値)]
endfunc
機能
内部関数定義。
詳細は前述の通り。

ステートメント名 stop
書式 stop
機能 プログラムの実行を停止する。停止した行番号をデバッグ画面に出力する。

ステートメント名 end
書式 end
機能 プログラムの実行を停止する。
また、グローバル部の終わりを宣言する。funcの記述はend以降でなくてはならない。
(逆に言うと、funcを記述し始める前にはendが必要。)
補足 プログラムのテスト中に途中で動作を止めるのがstop、本番でプログラムを止めるのがendと使い分ける。
双方独立でデバッグ情報の出力タイミングを設定できる。


// 入出力

ステートメント名 print
機能 テキスト画面に文字列や数値を表示する。
書式
print 変数[;]
    変数の内容を表示する。

print "文字列"[;]
    文字列を表示する。

print 式1;式2;・・・;式n[;]
    複数の式の結果をならべて表示する。

print 式1,式2,・・・,式n[,]
    複数の式の結果を、8文字間隔(TAB相当)でならべて表示する。
    最後に','を付けた場合、改行しない。
    グラフィック座標モードではタブではなくスペース1文字で並べられる。

式には数値と文字列を混在させることも出来る。
それぞれ、後ろに';'を付けた時は改行しない。

print
    改行のみ行う。
補足
  • 文字列中にコントロールコードが含まれている場合、以下のように処理されます。
    • テキスト座標モードではコントロールコードは全て無視されます
    • グラフィック座標モードでは文字列全体が表示されません
    いずれも高速化のためです。
    print "文字列"+chr$(コントロールコード)と記述した場合、
    "文字列"+chr$(コントロールコード)は文字列結合で1文字列と見なされるため、 コントロールコードは無視されます。
  • 表示コントロールコードは、その1文字だけをprintした場合にのみ実行されます。
    ただし、print "文字列";chr$(コントロールコード)と記述した場合は、';'で表示が区切られているので、
    コントロールコードは実行されます(','でも同様)。
  • 短い間隔(1秒以下)で同じ位置にprintすると、表示が瞬くことがあります。

ステートメント名 print using
書式 print using "書式";数値式[;数値式...]
機能
書式付きで数値を表示する。
書式文字列は、以下の文字群の組み合わせで構成される。この文字列は定数でなくてはならない。
# 表示する数値の桁数を指定する(桁に足りない部分は空白)
% 表示する数値の桁数を指定する(桁に足りない部分は0;iOS拡張)
. 小数点の位置を指定する
+
-
符号をつけて表示する。-の場合は#の後ろに設定する。
** 空白を*で埋める。**自体も数字桁数に数えます(+2桁)。
¥¥ 数字に¥を付ける(¥マークは実際には半角)
**¥ 空白を*で埋め、先頭に¥を付ける
^^^^^ 数値を指数を使った表現にする
, 3桁毎に,を付ける。#,と記述する。
^^^^^があるときは無視され#1桁扱いとなる
_(アンダーバー)直後の1文字を普通文字として表示する(主に書式文字の表示用)
using内では書式指定文字と普通文字を混在することも出来る。
普通文字はそのまま表示される。
書式指定の数と必要な式の数は同じでなくてはならない。
指定            表示結果
"+####";0       "   +0"     :// 0でも符号が付きます
"+####";10      "  +10"
"+####";-10     "  -10"
"####-";0       "   0 "     :// 0には符号が付きません
"####-";10      "  10 "
"####-";-10     "  10-"
"+%%%%";0       "+0000"     :// 0でも符号が付きます
"+%%%%";10      "+0010"
"+%%%%";-10     "-0010"
"%%%%-";0       "0000 "     :// 0には符号が付きません
"%%%%-";10      "0010 "
"%%%%-";-10     "0010-"

"+###.####"   前に符号付き、整数3桁+小数4桁
"**#,####-"   整数2+1+4=7桁、それに満たない場合は*で埋める、3桁ごと,区切り、後ろ符号付き

print using "マップ幅:##×##  時間:#####";wx,wy,dt    :// 書式指定3つに変数3つなので正しい
print using "マップ幅:##×##  時間:";wx,wy,dt         :// 書式指定2つに変数3つなのでエラーになる
補足 printのようにタブ表示のため、usingの最後に , を付けることはできません。必要なら
print using "#";v;:print ,
と記述してください。
後ろに ; を付けると改行しません。

ステートメント名 print using
書式 print using "書式";文字列式[;文字列式]
機能
書式付きで文字列を表示する。
書式文字列は、以下の文字群の組み合わせで構成される。文字列定数でなければならない。
! 文字列の先頭の一文字(バイトではない)だけ表示する
@ 全文字列を表示する
& & 2つの&間の文字数分表示する
_(アンダーバー)直後の1文字を普通文字として表示する(主に書式文字の表示用)
using内では書式指定文字と普通文字を混在することも出来る。
普通文字はそのまま表示される。
書式指定の数と必要な式の数は同じでなくてはならない。

ステートメント名 input
書式 input ["メッセージ";]変数[,変数...]
機能
キーボードからデータを変数に代入する。
変数はすべての型が指定できる。

メッセージを指定した場合は、入力前にそれが表示される。
メッセージは固定文字列でなくてはならず、文字列変数(相当)では与えられない。
必要なら、print で文字列変数を表示した直後にinputを実行すること。
    「例」
    print message$;:input a
入力欄は、メッセージを除いた1行終端までとなる。
したがって、メッセージが長すぎて1行に収まらないときは入力できなくなるので注意。

inputではキーボードのタイプを指定することは出来ない(KeyboardTypeNumbersAndPunctuation固定)。
必要なら、inputWithPlaceholder()を使うこと。

複数の変数を指定することも出来る。
入力は','で区切って列記する。
この場合、必要な個数を同時に入力する必要がある。
されてない場合は入力が、繰り返し催促される。
変数の型は異なる物が混在してもかまわない。

各入力に対しては正しい型となる入力を与えなければならない。
正しくない場合、再入力を求められる。
「例1」
int a
input "a=";a    :// int変数aに入力

「例2」
int a
str s
input "a,s=";a,s    :// int変数aと文字列変数sに同時入力する
            :// 以下の場合、入力が繰り返されます
            :// (1)同時に2つの入力がない
            :// (2)aに数値として正しくない入力をしようとした
注意 画面下部にカーソルがあるときにinputを実行すると、入力枠がキーボードに隠れて見えなくなります。
カーソル位置に注意してください。

ステートメント名 linput
書式 linput ["メッセージ";]str変数
機能
キーボードからデータを文字列変数に代入する。
但し変数はstr型で、1つでなくてはならない。
inputと違い、,(カンマ)、"(引用符)、'(シングルクオーテーション)を含む全ての文字を入力できる。
メッセージを指定した場合は入力時にそれを表示する。
str s
linput "s=";s
注意 画面下部にカーソルがあるときにlinputを実行すると、入力枠がキーボードに隠れて見えなくなります。
カーソル位置に注意してください。
入力欄は、メッセージを除いた1行終端までとなります。
したがって、メッセージが長すぎて1行に収まらないときは入力できなくなるので注意。


// その他

ステートメント名 error
書式 error off / error on / error on2
機能 外部関数内でエラーが発生したときの処理を設定する。
off 外部関数内でエラーが発生しても、エラーメッセージを表示せず、停止もしない。
on 外部関数内でエラーが発生したとき、エラーメッセージを表示して停止する
(fopen()でのファイルオープンエラーを除く)。
on2 fopen()でファイルオープンエラーが発生したときも、エラーメッセージを表示して停止する。
プログラム実行直後は自動的にerror onになる。
補足エラーをoffにしている間の異常に関しては、リターン値見て判定すること。


外部関数群


外部関数は、システム側で用意した関数群です。
ユーザーが記述する必要がない事を除いては、使い方は内部関数とほぼ同じです。
引数としてint/char/float(=数値系)を必要とする関数に異なる数値系型を与えた場合、
変換可能なら、自動的に引数型に変換して呼び出します(エラーが発生する場合は変換不可)。

補足:
[ ]内は省略可能な項目です。
...は以下同様に続くことを示します。


// ファイル系関数


以下のファイル系関数において、「ファイル終端」とは、 ファイルを最後(の1バイト)まで読んで、
さらに次の1バイト以上を読み込もうとした時の状態を言う。
ファイルの最後の1バイトのことではない。

関数名 fopen
書式 int fopen(name;str,md;str)
機能 ファイルをオープンする。
同時にオープンできるのは15ファイルまで
引数
name ファイルネーム
ASCIIまたはUTF8で指定すること。
md openモード
"c" 新規ファイルとして読み書き両用で開く。
同名ファイルがあった場合は、元のファイルは消される
"r" 既存ファイルを読み出し専用で開く
"w" ファイルを書き込み専用で開く
ファイルが存在するときは追記される
"rw" 既存ファイルを読み書き両用で開く
"ra" 既存ファイルを読み書き両用で開く
戻り値
>=0ファイル番号
戻り値は他のファイル系関数で使用するので、変数に保存し、壊さないようにする事
-1ファイルが開けない(エラー)
上記の値であるが、エラーかどうかは基本的にはfopenError()で判定すること。
これ以外のエラーはメッセージを表示してエラーで停止する
補足 X-BASIC/68とは異なり、標準ではファイルオープンエラーではエラーで停止しません(エラーコードを返すのみ)。
error on2でエラー停止させることも出来ます。
注意 V3.10で戻り値をX-BASIC/68に合わせて変更しました。設定で「fopen()のエラー値」を0(旧)に設定する、
またはerrorCodeFopen(NO)でV3.00までと同じになりますが 今後は出来るだけ新しい値でエラー判定してください。
参考:V3.00までの戻り値
>=1ファイル番号
0ファイルが開けない

関数名 fopenError
書式 int fopenError(fp;int)
機能 fopen()の戻り値がエラーかどうかを判定する
引数
fp ファイル番号(fopenの戻り値)
戻り値
NO 正常終了している
YES エラーが発生している
補足 この関数で判断する限り、fopen()のエラー値がどう設定されていても正しく判定できます。

関数名 errorCodeFopen
書式 int errorCodeFopen([mode;int])
機能 fopen()のエラー戻り値を新旧設定する。または現在の設定を返す。
引数
省略時 現在のfopen()のエラー値を返す
NO 旧(V3.00以前)に合わせる
YES 新(V3.10以降)に合わせる
戻り値 現在または変更前のfopen()のエラー値を返す(新=-1,旧=0)

関数名 fclose
書式 int fclose(fp;int)
機能 指定のファイルを閉じる
引数
fp ファイル番号(fopenの戻り値)
戻り値
0 正常終了
-1 エラー

関数名 fcloseall
書式 int fcloseall()
機能 開いている全てのファイルを閉じる
引数 なし
戻り値
0 正常終了
-1 エラー

関数名 fputc
書式 int fputc(ch;char,fp;int)
機能 ファイルに1バイト書き込む
引数
ch 書き込む1バイトデータ
fp ファイル番号(fopenの戻り値)
戻り値
>=0 chそのもの(書き込んだ文字)
-1 エラー

関数名 fgetc
書式 int fgetc(fp;int)
機能 ファイルから1バイト読み込む
引数
fp ファイル番号(fopenの戻り値)
戻り値
>=0 ファイルから読み込んだ1バイトデータ
-1 エラーまたはファイル終端にいる

関数名 fwrite
書式 int fwrite(ary();数値型,n;int,fp;int)
機能 ファイルに数値配列内容を書き込む
引数
ary 書き込むデータを持つchar/int/float型一次元配列
いずれの型の場合も、その中の全てのバイトを使って書き込む(1要素1バイト分ではない)。
n 書き込む要素数
ary(0)~ary(n)までが書き込まれる
配列の宣言要素数がn未満のときは、宣言要素数まで書き込む
fp ファイル番号(fopenの戻り値)
戻り値 実際に書き込まれた要素数(dim char以外ではバイト数ではないので注意)

関数名 fread
書式 int fread(ary();数値型,n;int,fp;int)
機能 ファイルから数値配列にデータを読み込む
引数
ary char/int/float型一次元配列
いずれの型の場合も、その中の全てのバイトを使って読み込む(1要素1バイト分ではない)
n 読み込む要素数。
ary(0)~ary(n)までに読み込まれる
配列の宣言要素数がn未満のときは、宣言要素数まで読み込む
fp ファイル番号(fopenの戻り値)
戻り値 実際に読み込まれた要素数(dim char以外ではバイト数ではないので注意)

関数名 fwrites
書式 int fwrites(st;str,fp;int)
機能 ファイルに文字列を書き込む
引数
st ファイルへ書き込む文字列。
文字列終端文字(&h00)は書き込まれない
fp ファイル番号(fopenの戻り値)
戻り値
>=0ファイルに書き込まれたバイト数
-1 エラー
注意 読み出しにfreadsを使うときは、stの末尾に改行コードを入れる必要がある。
改行コードはchr$(13)またはchr$(10)のみ、またはchr$(13)+chr$(10)いずれでもよい

関数名 freads
書式 int freads(st;str,fp;int)
機能 ファイルから、改行で終わる1行分を読み込む。改行コード自体は読み込まれない。
改行コードはchr$(13)またはchr$(10)のみ、またはchr$(13)+chr$(10)いずれでもよい。
引数
st 読み込む文字列を格納する文字列変数
fp ファイル番号(fopenの戻り値)
戻り値
>=0 ファイルから読み込まれたバイト数(改行コードで終わっている場合)
-1 エラーまたはファイル終端にいる
補足 改行コードなしでデータが終了するときは、st=読みだした行内容,リターン値=-1となる。
「例」TEST&h1aというファイルを読んだ場合、st="TEST",リターン値=-1となる。

関数名 fseek
書式 int fseek(fp;int,ofst;int,md;int)
機能 ファイルへの読み書きをする位置を設定する
引数
fp ファイル番号(fopenの戻り値)
ofst 基準位置からのオフセット値(バイト数)
base 基準位置
0 ファイルのはじめから
1 現在のデータポイントから
2 ファイルの終りから
戻り値
>=0実行後の位置
-1エラー

関数名 frewind
書式 frewind(fp;int)
機能 ファイルの読み書きポイントを先頭に戻す
引数
fp fopenの戻り値
戻り値 なし

関数名 feof
書式 int feof(fp;int)
機能 ファイル終端まで来たかどうかを調べる
引数
fp ファイル番号(fopenの戻り値)
戻り値
YES 終端である
NO 終端ではない

関数名 ferror
書式 int ferror(fp;int)
機能 直前のファイルアクセスでエラーが発生しているかどうかを調べる
引数
fp ファイル番号(fopenの戻り値)
戻り値
YES エラーが発生している
NO エラーは発生していない

関数名 ftell
書式 int ftell(fp;int)
機能 現在のファイル読み書き位置を返す
引数
fp ファイル番号(fopenの戻り値)
戻り値
>=0 現在位置(ファイル先頭からのオフセット値)
-1 エラー

関数名 frename
書式 int frename(oldname;str,newname;str)
機能 ファイル名を変更する
引数
oldname旧ファイル名
newname新ファイル名
戻り値
0 正常終了
-1 エラー
注意 ファイル名中にディレクトリ名を入れてはいけない

関数名 fdelete
書式 int fdelete(name;str)
機能 ファイルを削除する
引数
name 対象ファイル名
戻り値
0 正常終了
-1 エラー

関数名 filelength
書式 filelength(fname;str)
機能 ファイルサイズを得る
引数
fname 対象ファイル名
戻り値
>=0ファイルバイト数
open中のファイルの場合、open直後のファイルサイズである(その後追記されても変化しない)。
0指定ファイルが存在しない

関数名 mkdir
書式 int mkdir(dir;str)
機能 ディレクトリを作成する
引数
dir ディレクトリ名
末尾に'/'が付いていてもかまわない。
戻り値
0 正常終了
-1 エラー
注意 あまり深いディレクトリを作るとアクセス出来なくなる可能性がある。1階層が無難。
X-BASIC'にはカレントディレクトリという概念はないので、chdir()も存在しない。

関数名 rmdir
書式 int rmdir(dir;str)
機能 ディレクトリを削除する
ディレクトリ内は空でなければならない。
引数
dir ディレクトリ名
末尾に'/'が付いていてもかまわない。
戻り値
0 正常終了
-1 エラー

関数名 filecopy
書式 int filecopy(srcfile;str,desfile;str)
機能 ファイルをコピーする
引数
srcfile送り元ファイル名
desfile送り先ファイル名
srcfileと同名で別ディレクトリにコピーするときは、"ディレクトリ名/"とし、ファイル名を省略してもよい。
戻り値
0 正常終了
-1 エラー

関数名 files
書式 int files(pathes();str[,basedir;str][,ext;str][,fhave;int][,mode;int][,freg;int][,farea;int])
機能 ファイルまたはディレクトリを下位ディレクトリを含め検索し、条件に適合した名前を文字列配列に格納する。
引数
pathes 結果を格納する1次元文字列配列
basedir 検索を開始するディレクトリ。省略した場合はルートとなる。
システムエリアは常にルートから検索される(システム領域にはディレクトリがないので)。
ext 探すファイルの拡張子。省略した場合は全ての拡張子と見なす。
fhave 拡張子の一致条件を指定する。
YES(省略時) 一致したものを得る
NO 一致しないものを得る
mode 検索対象を指定する
FILES_FILE ファイルのみ
FILES_DIR ディレクトリのみ
FILES_ALL(省略時) 両方
freg extに正規表現を使うかどうか。
YES extを正規表現式と見なす
NO(省略時) extは普通文字列と見なす
farea 検索対象エリア指定
FILES_FAREA_USER(省略時) ユーザー領域のみ
FILES_FAREA_SYSTEM システム領域のみ
FILES_FAREA_ALL 両方
戻り値 一致したファイル数
pathes(0)~(戻り値-1)までに格納されている。
パス名が最大文字列長を超えるときは無視される。
補足 拡張正規表現についてはここを参照のこと
http://linuxjm.sourceforge.jp/html/GNU_grep/man1/grep.1.html (日本語)
サンプルfiler.bas,soundloader.bas,picloader.bas,emailTest.bas

関数名 lastPathComponent
書式 str lastPathComponent(path;str)
機能 ディレクトリ名/ファイル名.拡張子の文字列からファイル名.拡張子を取り出す。
引数
path ディレクトリ名/ファイル名.拡張子の文字列
戻り値 ファイル名.拡張子

関数名 pathExtension
書式 str pathExtension(path;str)
機能 ディレクトリ名/ファイル名.拡張子の文字列から拡張子のみを取り出す。
引数
path ディレクトリ名/ファイル名.拡張子の文字列
戻り値 拡張子



// データ変換関数


関数名 chr$
書式 str chr$(c;int)
機能 ASCIIおよびUTF8文字コードを文字列に変換する
引数
c 文字コード
標準ではASCIIまたはUTF8だが、強制SHIFT-JISモードで起動されている場合は、SHIFT-JISで指定すること
戻り値 1文字の文字列
補足 明示的にSHIFT-JIS/UTF8の文字コードを変換する場合はsjisChr$()/utf8Chr$()を使うこと

関数名 utf8Chr$
書式 utf8Chr$(c;int)
機能 UTF8およびASCII文字コードを文字(列)に変換する
引数
c 文字コード(ASCIIまたはUTF8)
戻り値 1文字の文字列
補足 明示的にSHIFT-JISの文字コードを変換する場合はsjisChr$()を使うこと

関数名 sjisChr$
書式 str sjisChr$(c;int)
機能 SHIFT-JISおよびASCII文字コードを文字(列)に変換する
引数
c 文字コード(ASCIIまたはSHIFT-JIS)
戻り値 1文字の文字列
補足 明示的にUTF8の文字コードを変換する場合はutf8Chr$()を使うこと

関数名 asc
書式 int asc(s;str)
機能 文字列の先頭1バイトの文字コードを返す
引数
s 文字列
戻り値 文字コード
補足 先頭1文字の文字コードを確実に得たい場合は、文字コードを把握した上、utf8()またはsjis()を使うこと

関数名 bin$
書式 str bin$(n;int)
機能 int数値を2進数文字列に変換する。
上位の0は除かれる
引数
n 数値
戻り値 2進文字列
意味 bin$(&b001011)="1011"

関数名 oct$
書式 str oct$(n;int)
機能 int数値を8進数文字列に変換する
引数
n 数値
戻り値 8進文字列
意味 oct$(&o123)="123"

関数名 hex$
書式 str hex$(n;int)
機能 int数値を16進数文字列に変換する
引数
n 数値
戻り値 16進文字列
意味 hex$(&h1234)="1234"

関数名 itoa/itoa$
書式 str itoa(n;int)
itoa$(n;int)
機能 int数値を10進文字列に変換する
引数
n 数値
戻り値 10進文字列
意味 itoa(1234)="1234"

関数名 atoi
書式 int atoi(s;str)
機能 10進文字列をint数値に変換する
引数
s 10進文字列
戻り値 int数値
意味 atoi("1234")=1234

関数名 atof/val
書式 float atof(s;str)
float val(s;str)
機能 float数値文字列をfloat型数値に変換する。
&h,&b,&oの進数表現文字列も変換できる
引数
s 浮動小数点表記数値文字列
戻り値 float数値
意味 atof("12.34E2")=1234#

関数名 str$
書式 str str$(n;float)
機能 float数値を文字列に変換する
引数
n 数値
戻り値 float文字列

関数名 int
書式 int int(n;float)
機能 float数値の小数点以下を切り捨ててint型のデータとして返す。
これは変数宣言のintではなく、関数のint()である
引数
n float値
戻り値 int値

関数名 fix
書式 float fix(n;float)
機能 float型数値の小数点以下を切り捨てた数値を返す
引数
n float値
戻り値 結果
意味 fix(3.14)=3#

関数名 modf
書式 float modf(n;float)
機能 float型数値の小数点以下のみを返す
引数
n float値
戻り値 結果
意味 modf(3.14)=0.14

関数名 tolower
書式 int tolower(c;int)
機能 文字コードcがASCII英大文字であればASCII英小文字のコードに変換する
引数
c 文字コード
戻り値 cが英大文字であれば、それに相当する英小文字のコードを、それ以外ならcそのものを返す
意味 tolower('A')='a'
SHIFT-JISでは2バイトコードの2バイト目に英字が来ることがあるので注意すること。
UTF8では問題ない

関数名 toupper
書式 int toupper(c;int)
機能 文字コードcが英小文字であれば英大文字のコードに変換する
引数
c 文字コード
戻り値 cが英小文字であれば、それに相当する英大文字のコードを、それ以外ならcそのものを返す
意味 tolower('a')='A'
SHIFT-JISでは2バイトコードの2バイト目に英字が来ることがあるので注意すること。
UTF8では問題ない

関数名 toascii
書式 int toascii(c;int)
機能 &h80〜&hffを&h00〜&h7fに変換する
引数
c 1バイトコード
戻り値 変換結果
意味 toascii(&hff)=&h7f

関数名 gcvt
書式 str gcvt(f;float,n;int)
機能 float数値を、指定された桁数の文字列に変換する
引数
f float値
n 有効桁数(小数点を除いた表示桁数、負号は含む)
整数位の数値が無い=0の場合、小数点以下の桁数だけで処理される
戻り値 変換結果文字列
意味
gcvt(12.3456,3)="12.3"
gcvt(12.3456,4)="12.35" 指定された桁の部分で四捨五入されている
gcvt(0.012345,4)="0.0123" 小数点以下しかないので、小数部の桁数だけで処理されている

関数名 ecvt
書式 str ecvt(f;float,n;int,p;int,Sign;int)
機能 float数値を符号と小数点のない文字列に変換する
引数
f float値
p 文字列全体の桁数を指定する
戻り値 変換結果文字列
p 小数点の位置(結果の文字列の左からp文字目に小数点を入れると元の数値と同じになる)
Sign fが>=0なら0を、<0なら1を返す
p/Signは、値を入れて返すため、変数でなければならない
意味
ecvt( 12.3456,3,p,Sign)="123" p=2,Sign=0
ecvt(-12.3456,4,p,Sign)="1234" p=3,Sign=1
補足 fcvt()との違いはpの意味合いである

関数名 fcvt
書式 str fcvt(f;float,n;int,p;int,Sign;int)
機能 float数値を符号と小数点のない文字列に変換する
引数
f float値
n 文字列の小数点以下の桁数を指定する
戻り値 変換結果文字列
p 小数点の位置(結果の文字列の左からp文字目に小数点を入れると元の数値と同じになる)
Sign fが>=0なら0を、<0なら1を返す
p/Signは、値を入れて返すため、変数でなければならない
意味
fcvt( 12.3456,2,p,Sign)="1234" p=2,Sign=0
fcvt(-12.3456,3,p,Sign)="12346" p=3,Sign=1
fcvt( 0.12345,2,p,Sign)="12" p=0,Sign=0
fcvt(-0.12345,2,p,Sign)="12" p=0,Sign=1
補足 ecvt()との違いはpの意味合いである

関数名 strToArray
書式 int strToArray(s;str,ary();charまたはint)
機能 文字列を1バイトずつに分解し、1次元配列に格納する。
文字列終端コードまで入る
引数
s 分解したい文字列
ary 分解結果を格納するcharまたはintの1次元配列
int配列でも1要素には1バイト分が入る
戻り値 使った要素数
入りきらないときは配列宣言時の要素数
意味 dim int a(3)
strToArray("1A@",a) → a(0)='1',a(1)='A',a(2)='@',a(3)=0
戻り値は4

関数名 arrayToStr
書式 int arrayToStr(ary();charまたはint,s;str)
機能 配列に分解されたバイト単位文字コード群から文字列を再構築する
引数
ary strToArray()で分解された文字列データを持つchar/int型1次元配列
s (0)~()=0の要素までをバイト列としてASCII文字列化した文字列を入れる変数
戻り値 strlen()
入りきらないときは最大文字長

関数名 utf8ToArray
書式 int utf8ToArray(s;str,ary();int)
機能 UTF8文字列を1文字ずつ1次元配列に分解、格納する
引数
s 分解したいUTF8文字列
ary 分解結果を格納するint1次元配列
1要素に1文字分が入る
戻り値 使った要素数
入りきらないときは配列宣言時の要素数

関数名 arrayToUtf8
書式 int arrayToUtf8(ary();int,s;str)
機能 配列に分解されたUTF8文字コード群からUTF8文字列を再構築する
引数
ary utf8ToArray()で分解された文字列データを持つint1次元配列
s (0)~()=0の要素までを文字コード列とした文字列を入れる変数
戻り値 utf8Len()
入りきらないときは最大文字長

関数名 sjisToArray
書式 int sjisToArray(s;str,ary();int)
機能 SJIS文字列を1文字ずつ1次元配列に分解、格納する
引数
s 分解したいSHIFT-JIS文字列
ary 分解結果を格納するint1次元配列
1要素に1文字分が入る
戻り値 使った要素数
入りきらないときは配列宣言時の要素数

関数名 arrayToSjis
書式 int arrayToSjis(ary();int,s;str)
機能 配列に分解されたSHIFT-JIS文字コード群からSHIFT-JIS文字列を再構築する
引数
ary sjisToArray()で分解された文字列データを持つint1次元配列
s (0)~()=0の要素までを文字コード列とした文字列を入れる変数
戻り値 sjisLen()
入りきらないときは最大文字長

関数名 hexstrToArray
書式 int hexstrToArray(s;str,ary();charまたはint)
機能 16進文字列を2桁ずつ1バイトに変換し、1次元配列に格納する。
引数
s 16進文字列。
半角スペース ',' '/' '_'はセパレーターと見なし、無視する。
それら以外の変換できない文字があったときはその直前までとなる。
ary 変換結果を格納するcharまたはintの1次元配列
int配列でも1要素には1バイト分が入る
戻り値 使った要素数
入りきらないときは配列宣言時の要素数
意味 dim int a(3)
hexstrToArray("0088FC",a) → a(0)=&h00,a(1)=&h88,a(2)=&hFC
戻り値は3



// 文字判定関係

文字コードはUTF8/SJIS/ASCIIの1文字分(必ずしも1バイトとは限らない)を与えること。
それ以外では正しい結果を保証しない。

関数名 iscntrl
書式 int iscntrl(c;int)
機能 文字コードが<&h20 または &h7fかどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isspace
書式 int isspace(c;int)
機能 文字コードが空白文字(&h09~&h0d,&h20)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isascii
書式 int isascii(c;int)
機能 文字コードがアスキー文字(&H00~&h7f)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 ispunct
書式 int ispunct(c;int)
機能 文字コードが表示可能な記号(&h20~&h2f,&h3a~&h40,&h5b~&h60,&h70~&h7e)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isalnum
書式 int isalnum(c;int)
機能 文字コードが英数字(A~Z/a~z/0~9)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isalpha
書式 int isalpha(c;int)
機能 文字コードが英字(A~Z/a~z)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isdigit
書式 int isdigit(c;int)
機能 文字コードが数字(0~9)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isgraph
書式 int isgraph(c;int)
機能 文字コードがスペース以外の表示可能な文字(&H21~&h7e)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 islower
書式 int islower(c;int)
機能 文字コードが英小文字(a~z)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isupper
書式 int isupper(c;int)
機能 文字コードが英大文字(A~Z)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isprint
書式 int isprint(c;int)
機能 文字コードが表示可能な文字(&h20~&h7e)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 isxdigit
書式 int isxdigit(c;int)
機能 文字コードが16進文字(0~9/A~F/a~f)かどうかを調べる
引数
c 文字コード
戻り値
YES 一致
NO 不一致

関数名 iskanji1Sjis
書式 iskanji1Sjis(c;int)
機能 SHIFT-JIS2バイト文字の1バイト目かどうかを調べる
引数
c 1バイトコード
戻り値
YES 一致
NO 不一致

関数名 iskanji2Sjis
書式 iskanji2Sjis(c;int)
機能 SHIFT-JIS2バイト文字の2バイト目として正当かどうかを調べる
引数
c 1バイトコード
戻り値
YES 一致
NO 不一致



// ASCII文字列処理

注意:
文字列の位置指定が左端を0とする場合(オフセット位置)と、1とする場合(文字数で数える)の2つがある。
これはX-BASIC/68仕様に従っているためである。
また、ここにある関数は、一部を除きASCIIコード専用である。

関数名 instr
書式 int instr(pos;int,s;str,ss;str)
機能 文字列s中から文字列ssを探す
バイト列検索なので文字コードに依存しない。
引数
pos 検索を始める位置(左端=1)
s この文字列から探す
ss 探す文字列
戻り値
>=1見つけた位置 (左端=1)
0見つからない または pos<0だった

関数名 strchr
書式 int strchr(s;str,c;char)
機能 文字列中から指定1バイト文字を探し、最初に見つけた位置を返す
引数
s 対象文字列
c 探したい文字(1バイト)
戻り値
>=0見つけた位置 (左端=0)
-1見つからない

関数名 strrchr
書式 int strrchr(s;str,c;char)
機能 文字列中で指定1バイト文字を探し、最後に見つけた位置を返す
引数
s 対象文字列
c 探したい文字(1バイト)
戻り値
>=0見つけた位置 (左端=0)
-1見つからない

関数名 strcspn
書式 int strcspn(s1;str,s2;str)
機能 文字列s1から文字列s2内のどれか1バイトを最初に見つけた位置を返す
引数
s1 対象文字列
s2 探す文字群
戻り値 見つけた位置(左端=0)
見つからないときは文字列s1の長さを返す

関数名 strspn
書式 int strspn(s1;str,s2;str)
機能 文字列s1の中から、文字列s2内に無い文字を最初に見つけた位置を返す
引数
s1 対象文字列
s2 比較文字群
戻り値 見つけた位置(左端=0)
見つからなかったときはs1の文字列の長さを返す。
どちらかの文字列が空文字列なら0を返す

関数名 strtok
書式 str strtok(s1;str,s2;str)
機能 s2に含まれるどれか1文字を区切り文字として、s1から部分文字列を順次取り出す。
これは、文字列からトークン(単語)を取り出すことを意味する。
最初の呼び出し時は、str1の先頭からに連続する、s2に含まれる文字を無視する。
続いてs1を""(またはNULL$)にして呼び出すと、トークンを返す。
s2に含まれる文字が見つからなくなると、空文字列を返す
引数
s1 対象文字列
s2 区切り文字群
戻り値 取り出した文字列
str2=""のときはstr1をそのまま返す
意味
tok=strtok(",,..123,456.ABC",",.") tok="123"
tok=strtok("",",.") tok="456"
tok=strtok("",",.") tok="ABC"
tok=strtok("",",.") tok="" 見つからなかった

関数名 space$
書式 str space$(cnt;int)
機能 半角スペース(' ')をcnt個並べた文字列を作る
引数
cnt 並べる数
最大文字列長を超えるときは、切られる。
0以下を指定すると空文字列を返す
戻り値 作られた文字列

関数名 string$
書式 str string$(cnt;int,s;str)
機能 文字列の先頭1バイトを、cnt個並べた文字列を作る
引数
cnt 並べる数
最大文字列長を超えるときは、切られる。
0以下を指定すると空文字列を返す
s 対象文字列
戻り値 作られた文字列

関数名 mirror$
書式 str mirror$(s;str)
機能 文字列sのバイト並びを左右反転して返す
引数
s1 対象文字列
戻り値 作られた文字列

関数名 mid$
書式 str mid$(s;str,pos;int,len;int)
機能 文字列の左からposバイト目からlenバイトの文字列を返す
引数
s1 対象文字列
pos 取り出しを開始する位置
1~len(s1)
pos>len(s1)またはlen<=0の時は空文字列を返す
len 取り出すバイト数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 left$
書式 str left$(s;str,len;int)
機能 文字列の左端からlenバイトを返す
引数
s 対象文字列
len 取り出すバイト数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 right$
書式 str right$(s;str,len;int)
機能 文字列の右端からlenバイトを返す
引数
s 対象文字列
len 取り出すバイト数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 strlen/len
書式 int strlen(s;str)
int len(s;str)
機能 文字列のバイト数を返す。終端文字は含まない
引数
s 対象文字列
戻り値 文字列バイト数
s=""のときは0を返す

関数名 strnset
書式 str strnset(s;str,c;char,len;int)
機能 文字列の先頭からlenバイトを指定文字に置換する
引数
ss 対象文字列
変数のみ(直接内容を書き換えるので)
c 置き換える文字(ASCIIコード)
len 置換するバイト数
戻り値 結果のsそのもの

関数名 strrev
書式 str strrev(s;str)
機能 文字列のバイト並びを左右反転させる
引数
s 対象文字列
変数のみ(直接内容を書き換えるので)
戻り値 結果のsそのもの
注意 mirror$()との違いは、引数sの内容が左右反転されることである

関数名 strset
書式 str strset(s;str,c;char)
機能 指定した文字で文字列全体を置換する
引数
s 対象文字列 変数のみ(直接内容を書き換えるので)
c 置き換える文字(ASCIIコード)
戻り値 結果のsそのもの

関数名 strupr
書式 str strupr(s;str)
機能 文字列中の英小文字を英大文字に変換する
引数
s 対象文字列 変数のみ(直接内容を書き換えるので)
戻り値 結果のsそのもの

関数名 strlwr
書式 str strlwr(s;str)
機能 文字列中の英大文字を英小文字に変換する
引数
s 対象文字列 変数のみ(直接内容を書き換えるので)
戻り値 結果のsそのもの

関数名 chrhex$
書式 str chrhex$(s;str)
機能 文字列の先頭から、ASCII文字コードを16進2桁数値文字列に変換する
引数
s 対象文字列
戻り値 変換結果文字列
意味 chrhex$("Aa0") = "416130"

関数名 hexchr$
書式 str hexchr$(s;str)
機能 文字列を16進2桁ずつに区切り、ASCII文字に変換する
引数
s 16進2桁数字群文字列
"00"は変換できない(無視される)
半角スペース ',' '/' '_'はセパレーターと見なし、無視する。
それら以外の変換できない文字があったときはその直前までとなる。
戻り値 変換結果文字列
意味 hexchr$("416130") = "Aa0"
hexchr$("41006130") = "Aa0" :// 00は無視されるから

関数名 regcomp
書式 int regcomp(src;str,reg;str[,mode;int][,sret;int][,eret;int])
機能 正規表現で文字列を比較する
引数
src 比較対象文字列
reg 正規表現(拡張表現対応)
mode 1=大文字小文字を区別しない
0=区別する(省略時)
戻り値
NO 不一致
YES 一致
一致時のみ、以下の値が格納される
sret 一致した位置を返す(先頭=0)
sretバイト目からが一致している
値を返すので変数を指定すること
省略時は返さない
eret 一致範囲+1の位置を返す=次回比較開始位置
値を返すので変数を指定すること
省略時は返さない
補足 拡張正規表現についてはここを参照のこと
http://linuxjm.sourceforge.jp/html/GNU_grep/man1/grep.1.html (日本語)



// 文字コード変換付き関数

UTF8またはSHIFT-JISにも対応した文字コードもしくは文字列用関数群である。

関数名 utf8ToSjis
書式 int utf8ToSjis(utf8;int)
機能 UTF8の文字コードをSHIFT-JISの文字コードに変換する
引数
utf8 UTF8の文字コード
戻り値 SHIFT-JISの文字コード
文字が存在しないコードを与えた場合は'※'が返る

関数名 sjisToUtf8
書式 int sjisToUtf8(sjis;int)
機能 SHIFT-JISの文字コードをUTF8の文字コードに変換する
引数
sjis SHIFT-JISの文字コード
戻り値 UTF8の文字コード
文字が存在しないコードを与えた場合は'※'が返る

関数名 utf16ToSjis
書式 int utf16ToSjis(c;int)
機能 UTF16の文字コードをSHIFT-JISのコードに変換する
引数
c UTF16文字コード
戻り値 SHIFT-JISコード

関数名 sjisToUtf16
書式 int sjisToUtf16(c;int)
機能 SHIFT-JISの文字コードをUTF16のコードに変換する
X68の1/2,1/4角文字は普通のASCIIに変換される
引数
c SHIFT-JISコード
戻り値 UTF16コード

関数名 utf16ToUtf8
書式 int utf16ToUtf8(c;int)
機能 UTF16の文字コードをUTF8のコードに変換する
引数
c UTF16文字コード
戻り値 UTF8文字コード

関数名 utf8ToUtf16
書式 int utf8ToUtf16(c;int)
機能 UTF8の文字コードをUTF16のコードに変換する
引数
c UTF8文字コード
戻り値 UTF16文字コード

関数名 utf8ToSjis$
書式 str utf8ToSjis$(utf8s;str,sjiss;str)
機能 UTF8の文字列をSHIFT-JISの文字列に変換する
引数
utf8s UTF8の文字列
sjiss 変換結果のSHIFT-JISの文字列を格納する変数
戻り値 sjissそのもの

関数名 sjisToUtf8$
書式 str sjisToUtf8$(sjiss;str,utf8s;str)
機能 SHIFT-JISの文字列をUTF8の文字列に変換する
引数
sjiss SHIFT-JISの文字列
utf8s 変換結果のUTF8の文字列を格納する変数
戻り値 utf8sそのもの

関数名 utf8Len
書式 int utf8Len(utf8s;str)
機能 UTF8での文字数を数える
引数
utf8s UTF8の文字列
戻り値 文字数
バイト数ではないので注意

関数名 sjisLen
書式 int sjisLen(sjiss;str)
機能 SHIFT-JISでの文字数を数える
引数
sjiss SHIFT-JISの文字列
戻り値 文字数
バイト数ではないので注意

関数名 utf8StrWidth
書式 int utf8StrWidth(mes;str)
機能 全角文字の幅は2、半角文字の幅1として、文字幅を得る
UTF8では半角文字でも複数バイトコードが存在するので、主に表示上の幅を得るためにこの関数がある。
引数
mes UTF8文字列
戻り値 文字列幅

関数名 sjisStrWidth
書式 int sjisStrWidth(mes;str)
機能 全角文字の幅は2、半角文字の幅1として、文字幅を得る
X68のSHIFT-JISには1/2角、1/4角文字が存在するので、主に表示上の幅を得るためにこの関数がある。
引数
mes SHIFT-JISの文字列
戻り値 文字列幅

関数名 utf8
書式 int utf8(utf8s;str)
機能 UTF8文字列先頭1文字の文字コードを返す
引数
utf8s UTF8の文字列
戻り値 先頭1文字の文字コード(UTF8)

関数名 sjis
書式 int sjis(sjiss;str)
機能 SHIFT-JIS文字列先頭1文字の文字コードを返す
引数
sjiss SHIFT-JISの文字列
戻り値 先頭1文字の文字コード(SHIFT-JIS)

関数名 utf8String$
書式 str utf8String$(cnt;int,utf8s;str)
機能 UTF8文字列の先頭1文字を、指定個数並べた文字列を作る
引数
cnt 並べる数
最大文字列長を超えるときは、切られる。
0以下を指定すると空文字列を返す。
utf8s 対象UTF8文字列
戻り値 作られた文字列
意味 utf8String$(5,"あいうえお") = "あああああ"

関数名 sjisString$
書式 str sjisString$(cnt;int,sjiss;str)
機能 SHIFT-JIS文字列の先頭1文字を、指定個数並べた文字列を作る
引数
cnt 並べる数
最大文字列長を超えるときは、切られる。
0以下を指定すると空文字列を返す
sjiss 対象SHIFT-JIS文字列
戻り値 作られた文字列
意味 sjisString$(5,"あいうえお") = "あああああ"

関数名 utf8Mirror$
書式 str utf8Mirror$(utf8s;str)
機能 UTF8で文字並びが左右逆転した文字列を作る
引数
utf8s UTF8の文字列
戻り値 作られた文字列
注意 mirror$()はバイト単位で反転するので、UTF8文字列では正しい結果を得られない

関数名 sjisMirror$
書式 str sjisMirror$(sjiss;str)
機能 SHIFT-JISで文字並びが左右逆転した文字列を作る
引数
sjiss SHIFT-JISの文字列
戻り値 作られた文字列
注意 mirror$()はバイト単位で反転するので、SHIFT-JIS文字列では正しい結果を得られない。

関数名 utf8Mid$
書式 str utf8Mid$(utf8s;str,pos;int,len;int)
機能 UTF8文字列の左からpos文字目からlen文字の文字列を返す
引数
utf8s UTF8の文字列
pos 取り出しを開始する位置
1~utf8Len(utf8s)
pos>utf8Len(utf8s)またはlen<=0の時は空文字列を返す
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 utf8Left$
書式 str utf8Left$(utf8s;str,len;int)
機能 UTF8文字列の左端からlen文字の文字列を返す
引数
utf8s UTF8の文字列
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 utf8Right$
書式 str utf8Right$(utf8s;str,len;int)
機能 UTF8文字列の右端からlen文字の文字列を返す
引数
utf8s UTF8の文字列
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 sjisMid$
書式 str sjisMid$(sjiss;str,pos;int,len;int)
機能 SHIFT-JIS文字列の左からpos文字目からlen文字の文字列を返す
引数
sjiss SHIFT-JISの文字列
pos 取り出しを開始する位置
1~sjisLen(sjiss)
pos>sjisLen(sjiss)またはlen<=0の時は空文字列を返す
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 sjisLeft$
書式 str sjisLeft$(sjiss;str,len;int)
機能 SHIFT-JIS文字列の左端からlen文字の文字列を返す
引数
sjiss SHIFT-JISの文字列
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 sjisRight$
書式 str sjisRight$(sjiss;str,len;int)
機能 SHIFT-JISの右端からlen文字の文字列を返す
引数
sjiss SHIFT-JISの文字列
len 取り出す文字数
-1にすると残り全部を意味する
戻り値 取り出した文字列

関数名 utf8Chr
書式 int utf8Chr(utf8s;str)
機能 UTF8文字列先頭1文字の文字コードを返す
引数
utf8s UTF8文字列
戻り値 先頭1文字の文字コード(UTF8)

関数名 sjisChr
書式 int sjisChr(sjiss;str)
機能 SHIFT-JIS文字列先頭1文字の文字コードを返す
引数
sjiss SHIFT-JIS文字列
戻り値 先頭1文字の文字コード(SHIFT-JIS)

関数名 chars2Sjis
書式 int chars2Sjis(c;int)
機能 1バイトコードを連続で与え、SHIFT-JISの文字コードとして成立したら返す
引数
c 1バイトコード
0を与えるとバイト列をリセットする
戻り値
&hffffffffまだ文字として完成していない
それ以外完成したSHIFT-JISコードまたはASCIIコードまたは半角カナ文字
補足 バイト列がSHIFT-JISバイト列として不正なコードを含む場合の動作は保証されない

関数名 chars2Utf8
書式 int chars2Utf8(c;int)
機能 1バイトコードを連続で与え、UTF8の文字コードとして成立したら返す
引数
c 1バイトコード
戻り値
&hffffffffまだ文字として完成していない
それ以外完成したUTF8コード
補足 バイト列がUTF8バイト列として不正なコードを含む場合の動作は保証されない

関数名 sjisHantozen
書式 int sjisHantozen(asccode;int,mode;int)
機能 (半角)ASC文字をSHIFT-JISの全角文字に変換する。
引数
asccode 変換するASC文字
mode 仮名文字(&ha1~&hdf)の変換仕方
0 カタカナに変換する
1 ひらがなに変換する
戻り値 変換後のSHIFT-JIS文字

関数名 utf8Hantozen
書式 int utf8Hantozen(asccode;int)
機能 (半角)ASC文字をUTF8の全角文字に変換する。
半角カナには対応していない(UTF8には半角カナがないので)。
引数
asccode 変換するASC文字
戻り値 変換後のUTF8文字

関数名 sjisZentohan
書式 int sjisZentohan(code;int)
機能 SHIFT-JISの全角文字を(半角)ASC文字に変換する。
引数
code 変換するSHIFT-JIS文字
戻り値 変換後のASC文字コード

関数名 utf8Zentohan
書式 int utf8Zentohan(code;int)
機能 UTF8の全角文字を(半角)ASC文字に変換する。
カナ文字には対応していない。
引数
code 変換するUTF8文字
戻り値 変換後のASC文字コード

関数名 sjisHantozens
書式 str sjisHantozens(s;str,mode;int)
機能 (半角)ASC文字列をSHIFT-JISの全角文字列に変換する。
引数
s 変換するASC文字文字列
mode 仮名文字(&ha1~&hdf)の変換仕方
0 カタカナに変換する
1 ひらがなに変換する
戻り値 変換後のSHIFT-JIS全角文字列

関数名 utf8Hantozens
書式 str utf8Hantozens(s;str)
機能 (半角)ASC文字列をUTF8の全角文字列に変換する。
半角カナには対応していない(UTF8には半角カナがないので)。
引数
s 変換するASC文字文字列
戻り値 変換後のUTF8文字全角文字列

関数名 sjisZentohans
書式 str sjisZentohans(sjiss;str)
機能 SHIFT-JISの全角文字列を(半角)ASC文字列に変換する。
仮名文字は半角カナに変換される。
引数
sjiss 変換するSHIFT-JIS全角文字列
戻り値 変換後のASC文字文字列

関数名 utf8Zentohans
書式 str utf8Zentohans(utf8s;str)
機能 UTF8の全角文字列を(半角)ASC文字列に変換する。
仮名文字は変換されない(UTF8には半角カナがないので)。
引数
utf8s 変換するUTF8全角文字列
戻り値 変換後のASC文字文字列

関数名 isSjisHandaku
書式 int isSjisHandaku(code;int)
機能 指定したSHIFT-JISの全角かな文字が濁点・半濁点を持つかどうかを調べる。
引数
code 調べるSHIFT-JIS文字
戻り値
0 普通文字
1 濁点文字
2 半濁点文字

関数名 isUtf8Handaku
書式 int isUtf8Handaku(code;int)
機能 指定したUTF8の全角かな文字が濁点・半濁点を持つかどうかを調べる。
引数
code 調べるUTF8文字
戻り値
0 普通文字
1 濁点文字
2 半濁点文字


// 数値演算・比較関数

関数名 sin
書式 float sin(n;float)
機能 三角関数sinを計算する
引数
n 角度(ラジアン)
戻り値 計算結果

関数名 cos
書式 float cos(n;float)
機能 三角関数cosを計算する
引数
n 角度(ラジアン)
戻り値 計算結果

関数名 tan
書式 float tan(n;float)
機能 三角関数tanを計算する
引数
n 角度(ラジアン)
戻り値 計算結果
同様に、逆関数、双曲線関数、逆双曲線関数がある。

    atan()      asin()      acos()
    sinh()      cosh()      tanh()
    asinh()     acosh()     atanh()
関数名 exp
書式 float exp(n;float)
機能 自然対数の底 e のn乗を計算する
引数
n float値
戻り値 計算結果

関数名 log
書式 float log(n;float)
機能 自然対数を計算する
引数
n float値
n(>=0)に限る
戻り値 計算結果

関数名 log10
書式 float log10(n;float)
機能 常用対数を計算する
引数
n float値
n(>=0)に限る
戻り値 計算結果

関数名 pi
書式 float pi([n;float])
機能 円周率のn倍値を計算する
引数
n 倍数
省略時は1
戻り値 計算結果

関数名 pow
書式 float pow(x;float,y;float)
機能 xのy乗を計算する
引数
x,y ただしx<0でyは整数に限る。
また、x=0の場合はy>=0に限る
戻り値 計算結果

関数名 sqr
書式 float sqr(n;float)
機能 平方根を計算する
引数
n float値(>=0)
<0の場合はエラーになる
戻り値 平方根

関数名 abs
書式 float abs(n;float)
機能 float値nの絶対値を得る
引数
n float値
戻り値 絶対値

関数名 iabs
書式 int iabs(n;int)
機能 int値nの絶対値を得る
引数
n int値
戻り値 絶対値

関数名 sgn
書式 float sgn(n;float)
機能 float値nの符号を調べる
引数
n float値
戻り値
1.0 nは正
-1.0 nは負
0.0 nは0.0

関数名 isgn
書式 int isgn(n;int)
機能 int値nの符号を調べる
引数
n int値
戻り値
1 nは正
-1 nは負
0 nは0

関数名 inc
書式 int inc(n;int)
機能 n+1の値を得る
引数
n int変数
n自体を更新するので変数で与えること。
戻り値 n+1
補足 配列の要素を与えることは出来ない(整数変数とは見なされないから)

関数名 dec
書式 int dec(n;int)
機能 n-1の値を得る
引数
n int変数
n自体を更新するので変数で与えること。
戻り値 n-1
補足 配列の要素を与えることは出来ない(整数変数とは見なされないから)

関数名 srand/randomize
書式 srand(seed;int)
randomize(seed;int)
機能 rand()/rnd()の系列を初期化する。
全て同じ動作をします。
引数
seed 初期値
-2147483648~2147483647
戻り値 なし
補足 同じ初期値では、rand()/rnd()は常に同じ乱数列を返す

関数名 rand
書式 int rand([type;int])
機能 0~2147483647の整数疑似乱数を発生する
引数
type 乱数の発生方式
NOまたは省略時 V3.00未満と同じ
YES より周期の長い乱数列を返す
戻り値 乱数値
補足 X-BASIC/68では0~32767の乱数を発生するため、同じ値範囲にするには(rand() mod 32728)とする必要があります。

関数名 rnd
書式 float rnd([type;int])
機能 0.0~1.0未満の実数乱数を発生する
引数
type 乱数の発生方式
NOまたは省略時 V3.00未満と同じ
YES より周期の長い乱数列を返す
戻り値 乱数値

関数名 isnan
書式 int isnan(f;float)
機能 実数fが非数値(NaN)かどうか調べる
引数
f float値
戻り値
YES NaNである
NO NaNではない



// その他関数

関数名 sizeofArray
書式 int sizeofArray(ary();任意型,size1;int)
機能 指定配列の総要素数と1要素サイズを返す
引数
ary int/char/float/strの配列
size1 1要素サイズ(バイト数)を返す
値を返すため変数にすること
戻り値 総要素数を返す

関数名 int6880
書式 int int6880(num;int)
機能 68形式(ビッグエンディアン)と80形式(リトルエンディアン)のint数値を交互変換する
引数
num int数値
戻り値 変換後のint数値を返す

関数名 float6880
書式 float float6880(num;float)
機能 68形式(ビッグエンディアン)と80形式(リトルエンディアン)のfloat数値を交互変換する
引数
num float数値
戻り値 変換後のfloat数値を返す

関数名 time
書式 int time()
機能 1970-01-01 00:00:00 からの経過秒数を返す
引数 なし
戻り値 経過秒数

関数名 clock
書式 int clock()
機能 CPU時間を得る
引数 なし
戻り値 CPU時間。
オーバーフローを起こすと0に戻る。
補足 これを定数CLOCKS_PER_SECで割るとおおよその秒数になるが、
iOS上ではなぜか一定間隔にならないので、他の方法で計測した時間とはおよそ一致しない。
故に、正確な時間計測に利用してはいけない。

関数名 bit
書式 int bit(bt;int)
機能 指定ビットを1にした値を返す
引数
bt ビット番号
0~31
戻り値 1 shl bt 相当
補足 startup.basにてBIT0~BIT31という定数が定義してある



// システム変数/システム関数

システム変数は、システムが持っている定数または変数値である(名称上は「変数」)

定数名 YES/true
int
真の値
補足 enum定数です。そのため、case値にも使えます。

定数名 NO/false
int
偽の値
補足 enum定数です。そのため、case値にも使えます。

変数名 date$
str
現在日付文字列("YYYY/MM/DD")

変数名 day$
str
現在曜日文字列

変数名 time$
str
現在時間文字列("hh:mm:ss")

変数名 NULL$
str
空文字列("")

変数名 errno
int
機能 直前に発生した外部関数のエラー番号を返す。
現在のバージョンでは余り意味を持たない。
(X-BASIC/68と同等。)

変数名 basicVersion$
str
X-BASIC'のバージョン文字列

変数名 basicCoreVersion$
str
X-BASIC'の言語中枢バージョン文字列

変数名 iOSInterfaceVersion$
str
書式 iOSInterfaceVersion$
X-BASIC'のiOS用インターフェース部のバージョン文字列

以下はシステム関数なので()が必要。
関数名 versionXBfilefunc$
書式 str versionXBfilefunc$()
機能 ファイル系関数のバージョンを返す
引数 なし
戻り値 ファイル系関数のバージョン文字列

関数名 versionXBfunc$
書式 str versionXBfunc$()
機能 標準関数のバージョンを返す
引数 なし
戻り値 標準関数のバージョン文字列

関数名 versionXBfunc2$
書式 str versionXBfunc2$()
機能 拡張関数のバージョンを返す
引数 なし
戻り値 拡張関数のバージョン文字列


補足
文字コードに関わる関数のまとめ
ASC専用 UTF8専用 SHIFT-JIS専用 機能
mid$ utf8Mid$ sjisMid$ 部分文字列取りだし
left$ utf8Left$ sjisLeft$ 文字列の左から部分文字列取りだし
right$ utf8Right$ sjisRight$ 文字列の右から部分文字列取りだし
mirror$ utf8Mirror$ sjisMirror$ 文字列を左右反転する
string$ utf8String$ sjisString$ 文字列の先頭文字を並べた文字列を作る
len utf8Len sjisLen 文字列長を返す
正確にはlenはバイト単位なのでUTF8/SHIFT-JISでも使える
utf8StrWidth sjisStrWidth 文字列幅を返す
asc utf8 sjis 文字列の先頭1文字のコードを返す
strchr utf8Chr sjisChr 指定文字の見つかった位置を返す
arrayToStr arrayToUtf8 arrayToSjis 配列→文字列変換
strToArray utf8ToArray sjisToArray 文字列→配列変換
chr$ utf8Chr$ sjisChr$ 指定コードの文字を返す
chr$はUTF8でも使える。
また、強制SHIFT-JISモードではSHIFT-JISでも使えるようになる
       
× sjisHantozen utf8Hantozen ASC文字を全角文字に変換
× sjisZentohan utf8Zentohan 全角文字をASC文字に変換
× sjisHantozens utf8Hantozens ASC文字列を全角文字列に変換
× sjisZentohans utf8Zentohans 全角文字列をASC文字列に変換
× isSjisHandaku isUtf8Handaku 全角かな文字が濁点・半濁点を持つかどうかを調べる
       
strcspn 文字列2をASCIIコード範囲に収める限りUTF8対応 × 文字列2中のどれか1文字が文字列1中に最初に出てきた位置を返す
strspn 文字列2をASCIIコード範囲に収める限りUTF8対応 × 文字列2中に含まれない文字が文字列1中に最初に出てきた位置を返す
strtok 文字列2をASCIIコード範囲に収める限りUTF8対応 × トークン切り出し
strlwr × 英大文字を小文字化する
strupr × 英大文字を大文字化する
       
strrchr × × 文字列中で指定文字が最後に見つかった位置を返す
strset × × 文字列の全ての文字をcにする
strnset × × 文字列の先頭n文字をcに変換する
strrev × × 文字列のバイト並びを逆転する

文字コード交互変換
UTF16 UTF8 SHIFT-JIS UTF16  
  utf16ToUtf8   utf8ToSjis   sjisToUtf16   文字コード
  None   utf8ToSjis$   None   文字列
  <-   <-   <-    
  utf8ToUtf16   sjisToUtf8   utf16ToSjis   文字コード
  None   sjisToUtf8$   None   文字列


全ステートメント/関数/定数/変数名リスト(アルファベット順)

種類別リスト
外部関数群
[戻る]