JIS X 3003:1993 電子計算機プログラム言語Full BASIC | ページ 7

                                                                                             27
X 3003-1993
5.6.4 意味 意味は,次による。
(1) rithmetic選択子は,その選択子 (option) を含むプログラム単位中での数値の論理的な振舞いを制御
する。
(2) rithmetic選択子でDECIMALを指定するか,又はarithmetic選択子を指定しない場合,数値変数の
値は,論理的に浮動小数点10進数として扱われ,処理系定義の精度(これをmけたとする。)及び範
囲をもつ。この精度は少なくとも10進数10けた (m≧10) とし,範囲は少なくとも10−38から10+38
までとする。
(3) 10進数演算の結果は,少なくとも10進m+1けたの精度をもつ浮動小数点10進数の中間結果の概念
によって規定する(処理系は,これと同等な別の方法で実現してもよい)。数値変数は,厳密に正確
(exact) な値をとる。数値定数は,少なくとも10進解けたの精度で正確に評価される。数値演算及び
数値関数は,その作用対象や引き数(これら自体,計算された中間結果であることもある。)から計算
された値について,少なくとも10進m+1けたの精度で正確に評価される。すべての場合に,評価の
中間結果は,少なくとも10進m+1けたの精度をもつ浮動小数点10進数として表現される。したが
って,真の結果がm+1けたの有効数字をもつ10進数で表現できるとき,計算された結果は,厳密に
正確である。個々の定数,演算及び関数の評価における誤差は,有効数字のm+2けた日において5
を超えない。処理系は,(真の結果に対する)絶対誤差が,これらの規定によって得られる結果の絶対
誤差よりも,常に大きくならない,いかなる数値の評価方法をとってもよい。
(4) rithmetic選択子でNATIVEを指定した場合,数値変数及び数値定数の値は,少なくとも10進6けた
の処理系定義の精度及び少なくとも2×10−38から10+38までの処理系定義の範囲をもつ処理系定義の
方法で表現され,扱われる。処理系は,誤差がこの精度の限度内である限り,10進数の値を必ずしも
正確に表現しなくてよい。
(5) ngle選択子は,その選択子を含むプログラム単位中での三角関数の評価を制御する。angle選択子で
RADIANSを指定するか,又はangle選択子を指定しない場合,数値組込み関数COS,COT,CSC,
SEC,SIN及びTAN,並びに図形変形関数ROTATE及びSHEARは引き数の単位をラジアンとし,数
値組込み関数ACOS,ANGLE,ASIN及びATNは結果の単位をラジアンとする。
(6) ngle選択子でDEGREESを指定した場合,数値組込み関数COS,COT,CSC,SEC,SIN及びTAN,
並びに図形変形関数ROTATH及びSHEARは引き数の単位を度とし,数値組込み関数ACOS,ANGLE,
ASIN及びATNは結果の単位を度とする。
(7) プログラムの実行がoption文の行に到達すると,何もしないで次の行に進む。
(8) umeric宣言に数値単純変数名を書くと,その変数は数値単純変数になる。
(9) プログラムの実行がdeclare文の行に到達すると,何もしないで次の行に進む。
5.6.5 例外状態 なし。
5.6.6 注意 注意は,次による。
(1) rithmetic選択子でNATIVEを指定した場合に処理系が選択する数値の表現は,DECIMALを指定し
たときと同じであってもよい。
(2) rithmetic選択子でNATIVEを指定した場合,数値式及び数値関数の評価における最小の精度は規定
しないが,処理系は少なくとも10進6けた以上の精度を保つことを推奨する。
(3) rithmetic選択子でNATIVEを指定した場合,処理系定義の正数の下限は,2×10−38以下である。こ
の値は,IEEE標準の浮動小数点2進数を採用する処理系を規格合致とするために定めた。

――――― [JIS X 3003 pdf 31] ―――――

28
X 3003-1993

6. 文字列

6.0 概要

 文字列は,BASICの基本的な二つのデータ型 (data type) の一つとする(他の一つは,数値と
する)。文字列 (string) は,文字の任意の連なりとする。その長さは,固定長でなく可変長であるが,ある
文字列に対して最大の長さを指定することもできる。文字列は,定数,変数及び組込み関数に結び付けら
れ,それらによって文字列式が構成される。

6.1 文字列定数

6.1.1  概要 文字列定数 (string-constant) は,引用符でくくられた固定長の文字の列とする。引用符それ
自身を文字列定数の中に含めるには,連続した二つの引用符で一つの引用符を表現する。
6.1.2 構文 構文は,次による。
(1) 定数⊃文字列定数
(2) 文字列定数=引用文字列
(3) 引用文字列=引用符 引用文字* 引用符
(4) 文字列定数の長さとは,引用符でくくられた引用文字の個数とする。これは二つの行末の間に書くこ
とのできる文字数の処理系定義の最大数(少なくとも132)によってだけ制限される。
6.1.3 例 構文の例を次に示す。
”XYZ” (2)
”1E10” (2)
”He said,””Dont””.” (2)
6.1.4 意味 文字列定数の値は,先頭と末尾の引用符でくくられたすべての引用文字の並びとする。引用
文字列の中の二連引用符 (double-quote) は,二つの記号からなるが,一つの引用符を表す。文字列定数中
の空白は,先頭及び末尾の空白列も含めて,意味をもつ。先頭の引用符と末尾の引用符とを続けて書いた
引用文字列 (” ”) は,空文字列を表す。文字列定数中の英大文字と英小文字とは,区別される。
6.1.5 例外状態 なし。
6.1.6 注意 文字列定数の最大長は,物理行の最大長によって制限される。したがって,文字列定数の最
大長は,行の長さ−3である。3というのは,行継続のアンド記号 (&),先頭の引用符及び末尾の引用符の
分である。例を示す。
100 LET A$=&
&”abc...unseen characters here...xyz”
物理行の最大長は132以上であるから,処理系は文字列定数の最大長を129以上としなければならない。

6.2 文字列変数

6.2.1  概要 文字列変数名 (string-variable) は,文字列単純変数 (simple string variable) 又は13次元の
文字列配列 (string array) の要素に対する参照とする。
文字列単純変数を明示的に宣言する必要はない。文字列変数名は,ドル記号によって数値変数名と区別
される。
6.2.2 構文 構文は,次による。
(1) 変数名⊃文字列変数名
(2) 文字列変数名={文字列単純変数名|文字列配列要素名} 部分文字列指定?
(3) 文字列単純変数名=文字列識別名
(4) 文字列配列要素名=文字列配列名 添字部
(5) 文字列配列名=文字列識別名

――――― [JIS X 3003 pdf 32] ―――――

                                                                                             29
X 3003-1993
(6) 部分文字列指定=左括弧 指標 コロン 指標 右括弧
(7) 単純変数名⊃文字列単純変数名
(8) 配列名⊃文字列配列名
6.2.3 例 構文の例を次に示す。
K$ (2)
name$(X:Y) (2)
ITEM$(1,n)(z:z+5) (2)
A$(4) (4)
table$(I,J) (4)
6.2.4 意味 意味は,次による。
(1) プログラムの実行中はいつも,一つの文字列変数は一つの文字列値に結び付いている。文字列変数に
結び付いた値は,プログラム中で文を実行して,変更することができる。
(2) 文字列変数に結び付いている文字列の長さは,プログラムの実行中に,0文字(空文字列を意味する。)
から,文字列変数に許される最大長(6.6.4参照)まで変わりうる。
(3) 文字列単純変数名 (simple-string-variable) は,明示的に宣言する(6.6参照)ことも,また,プログラ
ム単位中に書くだけで暗黙的に宣言することもできる。文字列変数名の有効範囲は,それの書いてあ
るプログラム単位とする。ただし,内部手続き定義の仮引き数の場合には,有効範囲はその定義の中
とする。
(4) 文字列配列要素名 (string-array-element) は,添字付き文字列変数名ともいい,13次元の配列中の要
素を添字の値によって選択して参照する。添字の値は,正しい範囲の中になければならない(7.1参照)。
(5) 部分文字列指定 (substring-qualifier) は,文字列変数に結び付いた値の一部を指定する手段を与える。
a$ (m : n) は,a$に結び付いた文字列値のm文字目からn文字目(m及びnは,指標とする。)までの
部分文字列を指定する。文字列中の文字は,左から右に,1から順に番号付けられる。部分文字列指
定に関する例外状態はない。m又はnが1からLEN (a$) までの範囲の中になければ,mはMAX (m, 1),
nはMIN (n, LEN (a$))とみなす。この調整後もm>nであれば,次のとおりとする。
(a) (b) EN (a$) 例 A$=“1234”とすると,次のとおりになる。
A$ (1 : 1) =“1”
A$ (1 : 3) =“123”
A$ (0 : 3) =“123”
A$ (2 : 5) =“234”
A$ (3 : 2) =A$の3番目の文字の前の空文字列
A$ (5 : 7) =A$の直後の空文字列
(6) 実行を開始する時に文字列変数に結び付ける初期値は,処理系定義とする。
6.2.5 例外状態 例外状態は,次による。
(1) 添字の値が,宣言された上下限指定の範囲の中にない。(2001,続行不能。)
6.2.6 注意 注意は,次による。
(1) 変数の初期値については規定しないので,処理系によって異なりうる。したがって,プログラムを移
植可能にするには,変数を含む式の評価に先立って,プログラム中でそれらの変数に値を明示的に代

――――― [JIS X 3003 pdf 33] ―――――

30
X 3003-1993
入しておくことが望ましい。
(2) 初期値を変数に結び付けるには,処理系定義の多くの方式がある。処理系がすべての変数の初期値を
未定義であることがわかるようにしておき,プログラム中で値を明示的に代入することなしにその変
数の値を利用しようとすると,例外状態(3102,続行可能。処理系定義の値を用いて処理を続ける。)
になる方式を推奨する。

6.3 文字列式

6.3.1  概要 文字列式 (string-expression) は,文字列変数名,文字列定数,文字列関数引用又はこれらの
連結 (concatenation) で構成する。
6.3.2 構文 構文は、次による。
(1) 式⊃文字列式
(2) 文字列式=文字列一次子{連結演算子 文字列一次子}*
(3) 文字列一次子=文字列定数|文字列変数名|文字列関数引用|左括弧 文字列式 右括弧
(4) 文字列関数引用=文字列関数名 値実引き数部?
(5) 文字列関数名=文字列定義関数名|文字列組込み関数名
(6) 連結演算子=アンド記号
(7) 文字列関数引用中の値実引き数の個数及び型は,その文字列関数の定義における値仮引き数の個数及
び型と一致していなければならない。実配列は,対応する値仮引き数と同じ次元数をもたなければな
らない。
(8) プログラム単位中の式の中で引用されるすべての文字列関数名は,組込み関数名であるか,又はその
プログラム単位中のより早い位置に,内部関数定義による定義若しくはdeclare文による宣言がなけ
ればならない。
6.3.3 例 構文の例を次に示す。
A2$ & B$(4:22)&”223” (2)
X$(1,3)(I:J) (3)
6.3.4 意味 意味は,次による。
(1) 文字列式の値は,その文字列式中の文字列一次子 (string-primary) の値を連結したものとする。
例 A$=“COME”及びB$=“IN”とすると,次のとおりになる。
A$ & B$=“COME IN”
B$ & A$=“INCOME”
(2) 文字列一次子は,文字列式の中で左から右に順に評価される。各文字列一次子ごとに,添字があれば
最初に添字が評価され,次に部分文字列指定が,最後にその文字列一次子自身の値が評価される。
(3) 文字列関数引用 (string-function-ref) は,あらかじめ定められた算法 (algorithm) を呼び出す記法とす
る。関数定義に仮引き数(parameter,6.4及び9.1参照)があれば,それは実引き数 (argument) の値
で置き換えられる。文字列関数を評価すると,定義されている算法を実行し,一つのスカラ文字列値
が結果として与えられ,これが文字列式の中の文字列関数引用の値になる。
6.3.5 例外状態 例外状態は,次による。
(1) 文字列式の評価が文字列あふれを起こす。(1051,続行不能。)
6.3.6 注意 アンド記号は,連結と行継続の両方に使う。だから,次の文は,文字の列ABCXYZを印字
する。
100 PRINT ”ABC” &&

――――― [JIS X 3003 pdf 34] ―――――

                                                                                             31
X 3003-1993
& ”XYZ”

6.4 文字列組込み関数

6.4.1  概要 一般的に使用される文字列関数 (string function) 及び実引き数が文字列であるような数値関
数 (numeric function) の評価に対し,あらかじめ定められた算法 (algorithm) が処理系から提供される。
6.4.2 構文 構文は,次による。
(1) 文字列組込み関数名⊃ [{CHR|DATE|LCASE|LTRIM|REPEAT|RTRIM|STR|TIME|UCASE|
USING}] ドル記号
(2) 数値組込み関数名⊃LEN|ORD|POS|VAL
(3) 数値関数引用⊃MAXLEN 左括弧{文字列単純変数名|文字列配列名} 右括弧
6.4.3 例 なし。
6.4.4 意味 組込み関数 (implementation-supplied function) の値,値実引き数の個数及び値実引き数の型
は,表6.1による。
表6.1 文字列関数
m : 指標,すなわち数値式を丸めた整数値; x : 数値式;
v$ : 文字列単純変数名又は文字列配列名; a$, b$ : 文字列式
関数 関数値
CHR$ (m) 宣言された文字集合の文字の大小順序における順序位置m+1の文字からなる長さ1文字
の文字列。文字集合の最初の文字は,引き数ゼロによって得られる。mは,ゼロ以上かつ
宣言された文字集合中の文字数未満でなければならない[表4.1(163ページ)参照]。
例 標準文字集合においては,次のとおりになる。
CHR$ (65) =“A”
CHR$ (53) = “5”,
固有文字集合におけるCHR$の値は,処理系定義とする。
DATE$ JIS X 0301に従った日付yyyymmddの文字列表現。
例 1977年5月9日のDATE$は,“19770509”である。
日付機能がない場合のDATE$の値は,“00000000”とする。
LCASE$ (a$) a$に結び付いた値の中の英大文字を,すべて対応する英小文字で置き換えて得られる文字
列。
LEN (a$) a$に結び付いた値の中の文字の個数。
例 次の文字列定数の値は1個の引用符であるから,関数値は1である。
LEN ( ” ” ” ” ) =1
LTRIM$ (a$) a$に結び付いた値の中の先行するすべての空白を削除して得られる文字列。
MAXLEN (v$) その文字列単純変数又は文字列配列の文字列の最大長(6.6参照)。有効な文字列長の制限
がないときは,値MAXNUMを返す。
ORD (a$) a$に結び付いた文字列によって指名された文字の,宣言された文字集合における順序位置。
文字集合の最初の文字の順序位置は,ゼロとする。a$として許される値は,その文字集合
中の1文字及び長さ23文字の呼び名 (mnemonic) とする。呼び名において,英大文字と
英小文字は同じに扱う。標準文字集合で許される値は,表4.1(163ページ)による。固有
文字集合で許される値は,処理系定義とする。
例 標準文字集合においては,次のようになる。
ORD (”BS”) =8
ORD (”A”) =65
ORD (”a”) =97
ORD (”5”) =53
ORD (”SOH”) =1
ORD (”Soh”) =1
ORD (”ABC”) ······例外状態
POS (a$, b$) a$に結び付いた文字列中で,b$に結び付いた値と一致する最初のものの先頭の,a$におけ

――――― [JIS X 3003 pdf 35] ―――――

次のページ PDF 36

JIS X 3003:1993の引用国際規格 ISO 一覧

  • ISO/IEC 10279:1991(IDT)

JIS X 3003:1993の国際規格 ICS 分類一覧

JIS X 3003:1993の関連規格と引用規格一覧