ステートメント&関数説明書
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ビットです。
&h | 16進数 |
&o | 8進数 |
&b | 2進数 |
'?' | 'でくくられる任意の1文字コード(すべての文字が指定可能)
文字コードは標準ではUTF8ですが、強制SHIFT-JISモード時はSHIFT-JISとなります。
|
|
float | 64ビット浮動小数点 | ±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化(整数以下切り捨て)して実行
演算子優先順位は以下のとおりです。
- 括弧で囲まれたもの
- 関数
- 符号(+/-)
- * /
- \
- mod
- + -
- shr shl
- 関係演算子
- not
- and
- or
- xor
真偽値
関係演算子は真偽値を返します。真偽値の値は定数としても用意されています。
YES true | 真 | -1 (Cとは異なる) |
NO false | 偽 | 0 |
なお、X-BASICにおける真偽は、以下のように判定されます。
これは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文の中に記述しても常に定義される。
|
// 制御構文
ステートメント名 | for ~ next |
書式 |
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の後に変数名を記述してはいけない。)
|
ステートメント名 | repeat ~ until |
書式 |
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
|
ステートメント名 | while ~ endwhile |
書式 |
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構文をフローチャートで図示すると、以下のようになる。

ステートメント名 | switch ~ endswitch/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 は不必要に多用すべきではない。 |
ステートメント名 | func ~ endfunc / 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(=数値系)を必要とする関数に異なる数値系型を与えた場合、
変換可能なら、自動的に引数型に変換して呼び出します(エラーが発生する場合は変換不可)。
補足:
- 関数名と()の間にスペースを入れてはいけません。
- 引数が実行にとって致命的な値の場合はエラーを発生しますが、範囲外等ではほとんどはエラーは発生せず、単に動作しないか標準値で動作します。
正しく動いていないと思う場合は、まず引数をチェックしてください。
- X-BASIC/68でステートメントだった機能の一部は関数化されています。
同名関数がある場合でも、一部引数の型や値範囲、戻り値、動作が異なる物もあります。
[ ]内は省略可能な項目です。
...は以下同様に続くことを示します。
// ファイル系関数
以下のファイル系関数において、「ファイル終端」とは、
ファイルを最後(の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までの戻り値
|
関数名 | fopenError |
書式 | int fopenError(fp;int) |
機能 | 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) |
機能 | 指定のファイルを閉じる |
引数 |
|
戻り値 |
|
関数名 | fcloseall |
書式 | int fcloseall() |
機能 | 開いている全てのファイルを閉じる |
引数 | なし |
戻り値 |
|
関数名 | fputc |
書式 | int fputc(ch;char,fp;int) |
機能 | ファイルに1バイト書き込む |
引数 |
ch | 書き込む1バイトデータ |
fp | ファイル番号(fopenの戻り値) |
|
戻り値 |
>=0 | chそのもの(書き込んだ文字) |
-1 | エラー |
|
関数名 | fgetc |
書式 | int fgetc(fp;int) |
機能 | ファイルから1バイト読み込む |
引数 |
|
戻り値 |
>=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 | ファイルの終りから |
|
|
戻り値 |
|
関数名 | frewind |
書式 | frewind(fp;int) |
機能 | ファイルの読み書きポイントを先頭に戻す |
引数 |
|
戻り値 | なし |
関数名 | feof |
書式 | int feof(fp;int) |
機能 | ファイル終端まで来たかどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | ferror |
書式 | int ferror(fp;int) |
機能 | 直前のファイルアクセスでエラーが発生しているかどうかを調べる |
引数 |
|
戻り値 |
YES | エラーが発生している |
NO | エラーは発生していない |
|
関数名 | ftell |
書式 | int ftell(fp;int) |
機能 | 現在のファイル読み書き位置を返す |
引数 |
|
戻り値 |
>=0 | 現在位置(ファイル先頭からのオフセット値) |
-1 | エラー |
|
関数名 | frename |
書式 | int frename(oldname;str,newname;str) |
機能 | ファイル名を変更する |
引数 |
oldname | 旧ファイル名 |
newname | 新ファイル名 |
|
戻り値 |
|
注意 | ファイル名中にディレクトリ名を入れてはいけない |
関数名 | fdelete |
書式 | int fdelete(name;str) |
機能 | ファイルを削除する |
引数 |
|
戻り値 |
|
関数名 | filelength |
書式 | filelength(fname;str) |
機能 | ファイルサイズを得る |
引数 |
|
戻り値 |
>=0 | ファイルバイト数
open中のファイルの場合、open直後のファイルサイズである(その後追記されても変化しない)。 |
0 | 指定ファイルが存在しない |
|
関数名 | mkdir |
書式 | int mkdir(dir;str) |
機能 | ディレクトリを作成する |
引数 |
dir | ディレクトリ名 末尾に'/'が付いていてもかまわない。 |
|
戻り値 |
|
注意 | あまり深いディレクトリを作るとアクセス出来なくなる可能性がある。1階層が無難。
X-BASIC'にはカレントディレクトリという概念はないので、chdir()も存在しない。
|
関数名 | rmdir |
書式 | int rmdir(dir;str) |
機能 | ディレクトリを削除する ディレクトリ内は空でなければならない。 |
引数 |
dir | ディレクトリ名 末尾に'/'が付いていてもかまわない。 |
|
戻り値 |
|
関数名 | filecopy |
書式 | int filecopy(srcfile;str,desfile;str) |
機能 | ファイルをコピーする |
引数 |
srcfile | 送り元ファイル名 |
desfile | 送り先ファイル名
srcfileと同名で別ディレクトリにコピーするときは、"ディレクトリ名/"とし、ファイル名を省略してもよい。 |
|
戻り値 |
|
関数名 | 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文字コードを文字(列)に変換する |
引数 |
|
戻り値 | 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バイトの文字コードを返す |
引数 |
|
戻り値 | 文字コード |
補足 | 先頭1文字の文字コードを確実に得たい場合は、文字コードを把握した上、utf8()またはsjis()を使うこと |
関数名 | bin$ |
書式 | str bin$(n;int) |
機能 | int数値を2進数文字列に変換する。 上位の0は除かれる |
引数 |
|
戻り値 | 2進文字列 |
意味 | bin$(&b001011)="1011" |
関数名 | oct$ |
書式 | str oct$(n;int) |
機能 | int数値を8進数文字列に変換する |
引数 |
|
戻り値 | 8進文字列 |
意味 | oct$(&o123)="123" |
関数名 | hex$ |
書式 | str hex$(n;int) |
機能 | int数値を16進数文字列に変換する |
引数 |
|
戻り値 | 16進文字列 |
意味 | hex$(&h1234)="1234" |
関数名 | itoa/itoa$ |
書式 | str itoa(n;int) itoa$(n;int) |
機能 | int数値を10進文字列に変換する |
引数 |
|
戻り値 | 10進文字列 |
意味 | itoa(1234)="1234" |
関数名 | atoi |
書式 | int atoi(s;str) |
機能 | 10進文字列をint数値に変換する |
引数 |
|
戻り値 | int数値 |
意味 | atoi("1234")=1234 |
関数名 | atof/val |
書式 | float atof(s;str) float val(s;str) |
機能 | float数値文字列をfloat型数値に変換する。
&h,&b,&oの進数表現文字列も変換できる |
引数 |
|
戻り値 | float数値 |
意味 | atof("12.34E2")=1234# |
関数名 | str$ |
書式 | str str$(n;float) |
機能 | float数値を文字列に変換する |
引数 |
|
戻り値 | float文字列 |
関数名 | int |
書式 | int int(n;float) |
機能 | float数値の小数点以下を切り捨ててint型のデータとして返す。
これは変数宣言のintではなく、関数のint()である |
引数 |
|
戻り値 | int値 |
関数名 | fix |
書式 | float fix(n;float) |
機能 | float型数値の小数点以下を切り捨てた数値を返す |
引数 |
|
戻り値 | 結果 |
意味 | fix(3.14)=3# |
関数名 | modf |
書式 | float modf(n;float) |
機能 | float型数値の小数点以下のみを返す |
引数 |
|
戻り値 | 結果 |
意味 | modf(3.14)=0.14 |
関数名 | tolower |
書式 | int tolower(c;int) |
機能 | 文字コードcがASCII英大文字であればASCII英小文字のコードに変換する |
引数 |
|
戻り値 | cが英大文字であれば、それに相当する英小文字のコードを、それ以外ならcそのものを返す |
意味 | tolower('A')='a' |
注 | SHIFT-JISでは2バイトコードの2バイト目に英字が来ることがあるので注意すること。
UTF8では問題ない |
関数名 | toupper |
書式 | int toupper(c;int) |
機能 | 文字コードcが英小文字であれば英大文字のコードに変換する |
引数 |
|
戻り値 | cが英小文字であれば、それに相当する英大文字のコードを、それ以外ならcそのものを返す |
意味 | tolower('a')='A' |
注 | SHIFT-JISでは2バイトコードの2バイト目に英字が来ることがあるので注意すること。
UTF8では問題ない |
関数名 | toascii |
書式 | int toascii(c;int) |
機能 | &h80〜&hffを&h00〜&h7fに変換する |
引数 |
|
戻り値 | 変換結果 |
意味 | 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数値を符号と小数点のない文字列に変換する |
引数 |
|
戻り値 | 変換結果文字列
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かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isspace |
書式 | int isspace(c;int) |
機能 | 文字コードが空白文字(&h09~&h0d,&h20)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isascii |
書式 | int isascii(c;int) |
機能 | 文字コードがアスキー文字(&H00~&h7f)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | ispunct |
書式 | int ispunct(c;int) |
機能 | 文字コードが表示可能な記号(&h20~&h2f,&h3a~&h40,&h5b~&h60,&h70~&h7e)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isalnum |
書式 | int isalnum(c;int) |
機能 | 文字コードが英数字(A~Z/a~z/0~9)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isalpha |
書式 | int isalpha(c;int) |
機能 | 文字コードが英字(A~Z/a~z)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isdigit |
書式 | int isdigit(c;int) |
機能 | 文字コードが数字(0~9)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isgraph |
書式 | int isgraph(c;int) |
機能 | 文字コードがスペース以外の表示可能な文字(&H21~&h7e)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | islower |
書式 | int islower(c;int) |
機能 | 文字コードが英小文字(a~z)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isupper |
書式 | int isupper(c;int) |
機能 | 文字コードが英大文字(A~Z)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isprint |
書式 | int isprint(c;int) |
機能 | 文字コードが表示可能な文字(&h20~&h7e)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | isxdigit |
書式 | int isxdigit(c;int) |
機能 | 文字コードが16進文字(0~9/A~F/a~f)かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | iskanji1Sjis |
書式 | iskanji1Sjis(c;int) |
機能 | SHIFT-JIS2バイト文字の1バイト目かどうかを調べる |
引数 |
|
戻り値 |
|
関数名 | iskanji2Sjis |
書式 | iskanji2Sjis(c;int) |
機能 | SHIFT-JIS2バイト文字の2バイト目として正当かどうかを調べる |
引数 |
|
戻り値 |
|
// 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バイト文字を探し、最初に見つけた位置を返す |
引数 |
|
戻り値 |
>=0 | 見つけた位置 (左端=0) |
-1 | 見つからない |
|
関数名 | strrchr |
書式 | int strrchr(s;str,c;char) |
機能 | 文字列中で指定1バイト文字を探し、最後に見つけた位置を返す |
引数 |
|
戻り値 |
>=0 | 見つけた位置 (左端=0) |
-1 | 見つからない |
|
関数名 | strcspn |
書式 | int strcspn(s1;str,s2;str) |
機能 | 文字列s1から文字列s2内のどれか1バイトを最初に見つけた位置を返す |
引数 |
|
戻り値 | 見つけた位置(左端=0)
見つからないときは文字列s1の長さを返す |
関数名 | strspn |
書式 | int strspn(s1;str,s2;str) |
機能 | 文字列s1の中から、文字列s2内に無い文字を最初に見つけた位置を返す |
引数 |
|
戻り値 | 見つけた位置(左端=0)
見つからなかったときはs1の文字列の長さを返す。
どちらかの文字列が空文字列なら0を返す |
関数名 | strtok |
書式 | str strtok(s1;str,s2;str) |
機能 | s2に含まれるどれか1文字を区切り文字として、s1から部分文字列を順次取り出す。
これは、文字列からトークン(単語)を取り出すことを意味する。
最初の呼び出し時は、str1の先頭からに連続する、s2に含まれる文字を無視する。
続いてs1を""(またはNULL$)にして呼び出すと、トークンを返す。
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のバイト並びを左右反転して返す |
引数 |
|
戻り値 | 作られた文字列 |
関数名 | 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=""のときは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桁数値文字列に変換する |
引数 |
|
戻り値 | 変換結果文字列 |
意味 | 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の文字コードに変換する |
引数 |
|
戻り値 | SHIFT-JISの文字コード
文字が存在しないコードを与えた場合は'※'が返る |
関数名 | sjisToUtf8 |
書式 | int sjisToUtf8(sjis;int) |
機能 | SHIFT-JISの文字コードをUTF8の文字コードに変換する |
引数 |
|
戻り値 | UTF8の文字コード
文字が存在しないコードを与えた場合は'※'が返る
|
関数名 | utf16ToSjis |
書式 | int utf16ToSjis(c;int) |
機能 | UTF16の文字コードをSHIFT-JISのコードに変換する |
引数 |
|
戻り値 | SHIFT-JISコード
|
関数名 | sjisToUtf16 |
書式 | int sjisToUtf16(c;int) |
機能 | SHIFT-JISの文字コードをUTF16のコードに変換する
X68の1/2,1/4角文字は普通のASCIIに変換される |
引数 |
|
戻り値 | UTF16コード
|
関数名 | utf16ToUtf8 |
書式 | int utf16ToUtf8(c;int) |
機能 | UTF16の文字コードをUTF8のコードに変換する |
引数 |
|
戻り値 | UTF8文字コード
|
関数名 | utf8ToUtf16 |
書式 | int utf8ToUtf16(c;int) |
機能 | UTF8の文字コードをUTF16のコードに変換する |
引数 |
|
戻り値 | 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での文字数を数える |
引数 |
|
戻り値 | 文字数
バイト数ではないので注意 |
関数名 | sjisLen |
書式 | int sjisLen(sjiss;str) |
機能 | SHIFT-JISでの文字数を数える |
引数 |
|
戻り値 | 文字数
バイト数ではないので注意
|
関数名 | utf8StrWidth |
書式 | int utf8StrWidth(mes;str) |
機能 | 全角文字の幅は2、半角文字の幅1として、文字幅を得る
UTF8では半角文字でも複数バイトコードが存在するので、主に表示上の幅を得るためにこの関数がある。
|
引数 |
|
戻り値 | 文字列幅 |
関数名 | sjisStrWidth |
書式 | int sjisStrWidth(mes;str) |
機能 | 全角文字の幅は2、半角文字の幅1として、文字幅を得る
X68のSHIFT-JISには1/2角、1/4角文字が存在するので、主に表示上の幅を得るためにこの関数がある。
|
引数 |
|
戻り値 | 文字列幅 |
関数名 | utf8 |
書式 | int utf8(utf8s;str) |
機能 | UTF8文字列先頭1文字の文字コードを返す |
引数 |
|
戻り値 | 先頭1文字の文字コード(UTF8) |
関数名 | sjis |
書式 | int sjis(sjiss;str) |
機能 | SHIFT-JIS文字列先頭1文字の文字コードを返す |
引数 |
|
戻り値 | 先頭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で文字並びが左右逆転した文字列を作る |
引数 |
|
戻り値 | 作られた文字列 |
注意 | mirror$()はバイト単位で反転するので、UTF8文字列では正しい結果を得られない |
関数名 | sjisMirror$ |
書式 | str sjisMirror$(sjiss;str) |
機能 | 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文字の文字コードを返す |
引数 |
|
戻り値 | 先頭1文字の文字コード(UTF8) |
関数名 | sjisChr |
書式 | int sjisChr(sjiss;str) |
機能 | SHIFT-JIS文字列先頭1文字の文字コードを返す |
引数 |
|
戻り値 | 先頭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の文字コードとして成立したら返す |
引数 |
|
戻り値 |
&hffffffff | まだ文字として完成していない |
それ以外 | 完成したUTF8コード |
|
補足 | バイト列がUTF8バイト列として不正なコードを含む場合の動作は保証されない |
関数名 | sjisHantozen |
書式 | int sjisHantozen(asccode;int,mode;int) |
機能 | (半角)ASC文字をSHIFT-JISの全角文字に変換する。 |
引数 |
asccode | 変換するASC文字 |
mode | 仮名文字(&ha1~&hdf)の変換仕方
|
|
戻り値 | 変換後のSHIFT-JIS文字 |
関数名 | utf8Hantozen |
書式 | int utf8Hantozen(asccode;int) |
機能 | (半角)ASC文字をUTF8の全角文字に変換する。 半角カナには対応していない(UTF8には半角カナがないので)。 |
引数 |
|
戻り値 | 変換後のUTF8文字 |
関数名 | sjisZentohan |
書式 | int sjisZentohan(code;int) |
機能 | SHIFT-JISの全角文字を(半角)ASC文字に変換する。 |
引数 |
|
戻り値 | 変換後のASC文字コード |
関数名 | utf8Zentohan |
書式 | int utf8Zentohan(code;int) |
機能 | UTF8の全角文字を(半角)ASC文字に変換する。 カナ文字には対応していない。 |
引数 |
|
戻り値 | 変換後のASC文字コード |
関数名 | sjisHantozens |
書式 | str sjisHantozens(s;str,mode;int) |
機能 | (半角)ASC文字列をSHIFT-JISの全角文字列に変換する。 |
引数 |
s | 変換するASC文字文字列 |
mode | 仮名文字(&ha1~&hdf)の変換仕方
|
|
戻り値 | 変換後のSHIFT-JIS全角文字列 |
関数名 | utf8Hantozens |
書式 | str utf8Hantozens(s;str) |
機能 | (半角)ASC文字列をUTF8の全角文字列に変換する。 半角カナには対応していない(UTF8には半角カナがないので)。 |
引数 |
|
戻り値 | 変換後のUTF8文字全角文字列 |
関数名 | sjisZentohans |
書式 | str sjisZentohans(sjiss;str) |
機能 | SHIFT-JISの全角文字列を(半角)ASC文字列に変換する。
仮名文字は半角カナに変換される。
|
引数 |
|
戻り値 | 変換後のASC文字文字列 |
関数名 | utf8Zentohans |
書式 | str utf8Zentohans(utf8s;str) |
機能 | UTF8の全角文字列を(半角)ASC文字列に変換する。
仮名文字は変換されない(UTF8には半角カナがないので)。
|
引数 |
|
戻り値 | 変換後のASC文字文字列 |
関数名 | isSjisHandaku |
書式 | int isSjisHandaku(code;int) |
機能 | 指定したSHIFT-JISの全角かな文字が濁点・半濁点を持つかどうかを調べる。 |
引数 |
|
戻り値 |
|
関数名 | isUtf8Handaku |
書式 | int isUtf8Handaku(code;int) |
機能 | 指定したUTF8の全角かな文字が濁点・半濁点を持つかどうかを調べる。 |
引数 |
|
戻り値 |
|
// 数値演算・比較関数
関数名 | sin |
書式 | float sin(n;float) |
機能 | 三角関数sinを計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | cos |
書式 | float cos(n;float) |
機能 | 三角関数cosを計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | tan |
書式 | float tan(n;float) |
機能 | 三角関数tanを計算する |
引数 |
|
戻り値 | 計算結果 |
同様に、逆関数、双曲線関数、逆双曲線関数がある。
atan() asin() acos()
sinh() cosh() tanh()
asinh() acosh() atanh()
関数名 | exp |
書式 | float exp(n;float) |
機能 | 自然対数の底 e のn乗を計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | log |
書式 | float log(n;float) |
機能 | 自然対数を計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | log10 |
書式 | float log10(n;float) |
機能 | 常用対数を計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | pi |
書式 | float pi([n;float]) |
機能 | 円周率のn倍値を計算する |
引数 |
|
戻り値 | 計算結果 |
関数名 | 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の絶対値を得る |
引数 |
|
戻り値 | 絶対値 |
関数名 | iabs |
書式 | int iabs(n;int) |
機能 | int値nの絶対値を得る |
引数 |
|
戻り値 | 絶対値 |
関数名 | sgn |
書式 | float sgn(n;float) |
機能 | float値nの符号を調べる |
引数 |
|
戻り値 |
1.0 | nは正 |
-1.0 | nは負 |
0.0 | nは0.0 |
|
関数名 | isgn |
書式 | int isgn(n;int) |
機能 | int値nの符号を調べる |
引数 |
|
戻り値 |
|
関数名 | inc |
書式 | int inc(n;int) |
機能 | n+1の値を得る |
引数 |
n | int変数 n自体を更新するので変数で与えること。 |
|
戻り値 | n+1 |
補足 | 配列の要素を与えることは出来ない(整数変数とは見なされないから) |
関数名 | dec |
書式 | int dec(n;int) |
機能 | n-1の値を得る |
引数 |
n | int変数 n自体を更新するので変数で与えること。 |
|
戻り値 | n-1 |
補足 | 配列の要素を与えることは出来ない(整数変数とは見なされないから) |
関数名 | 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)かどうか調べる |
引数 |
|
戻り値 |
|
// その他関数
関数名 | sizeofArray |
書式 | int sizeofArray(ary();任意型,size1;int) |
機能 | 指定配列の総要素数と1要素サイズを返す |
引数 |
ary | int/char/float/strの配列 |
size1 | 1要素サイズ(バイト数)を返す
値を返すため変数にすること |
|
戻り値 | 総要素数を返す |
関数名 | int6880 |
書式 | int int6880(num;int) |
機能 | 68形式(ビッグエンディアン)と80形式(リトルエンディアン)のint数値を交互変換する |
引数 |
|
戻り値 | 変換後のint数値を返す |
関数名 | float6880 |
書式 | float float6880(num;float) |
機能 | 68形式(ビッグエンディアン)と80形式(リトルエンディアン)の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にした値を返す |
引数 |
|
戻り値 | 1 shl bt 相当 |
補足 | startup.basにてBIT0~BIT31という定数が定義してある |
// システム変数/システム関数
システム変数は、システムが持っている定数または変数値である(名称上は「変数」)
定数名 | YES/true |
型 | int |
値 | 真の値 |
補足 | enum定数です。そのため、case値にも使えます。 |
定数名 | NO/false |
型 | int |
値 | 偽の値 |
補足 | enum定数です。そのため、case値にも使えます。 |
変数名 | date$ |
型 | str |
値 | 現在日付文字列("YYYY/MM/DD") |
変数名 | time$ |
型 | str |
値 | 現在時間文字列("hh:mm:ss") |
変数名 | NULL$ |
型 | str |
値 | 空文字列("") |
変数名 | errno |
型 | int |
機能 | 直前に発生した外部関数のエラー番号を返す。
現在のバージョンでは余り意味を持たない。
(X-BASIC/68と同等。) |
以下はシステム関数なので()が必要。
関数名 | versionXBfilefunc$ |
書式 | str versionXBfilefunc$() |
機能 | ファイル系関数のバージョンを返す |
引数 | なし |
戻り値 | ファイル系関数のバージョン文字列 |
関数名 | versionXBfunc$ |
書式 | str versionXBfunc$() |
機能 | 標準関数のバージョンを返す |
引数 | なし |
戻り値 | 標準関数のバージョン文字列 |
関数名 | versionXBfunc2$ |
書式 | str versionXBfunc2$() |
機能 | 拡張関数のバージョンを返す |
引数 | なし |
戻り値 | 拡張関数のバージョン文字列 |
補足
文字コードに関わる関数のまとめ
文字コード交互変換
全ステートメント/関数/定数/変数名リスト(アルファベット順)
種類別リスト
外部関数群