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

32
X 3003-1993
関数 関数値
る文字位置。一致する部分がないときは,POS (a$, b$) はゼロとする。POS (a$, ” ”) は,a$の
すべての値に対して1とする。
POS (a$, b$, m) a$に結び付いた値の第m文字目以降の文字列中で,b$に結び付いた値と一致する最初のも
のの先頭の,a$における文字位置。b$に結び付いた値がa$に結び付いた値のmで指定され
た部分中にないとき,又はm>LEN (a$) であるとき,ゼロを返す。それ以外は,次の算法
によって定められるPOSの値を返す。
LET temp1=MAX (1, MIN (m, LEN (a$) +1))
LET temp2$=a$ (temp1 : LEN (a$))
LET temp3=POS (temp2$, b$)
IF temp3=0 THEN
LET POS=0
ELSE
LET POS=temp3+temp1−1
END IF
例 a$=“GRANDSTANDING”とすると,次のとおりになる。
POS (a$, ”AN”, 1) =3
POS (a$, ”AN”, 4) =8
POS (a$, ”AN”, 9) =0
POS (a$, ” ”, m) は,m≦LEN (a$) のとき,MAX (m, 1) になる。
REPEAT$ (a$, m) a$に結び付いた値をm回繰り返して連結した文字列値。mは,ゼロ以上とする。
RTRIM$ (a$) a$に結び付いた値の中の後続するすべての空白を削除して得られる文字列。
STR$ (x) xに結び付いた値がprint文によって出力されるときの数値定数の形をした文字列。この数
値定数の前後の空白は,除かれる。
例 STR$ (123.5) =“123.5”
STR$ (−3.14) =“−3.14”
TIME$ JIS X 0302に従った24時間表示の時刻hh : mm : ssの文字列表現。
例 午前11時15分のTIME$の値は,“11 : 15 : 00”である。
時計機能がない場合のTIME$の値は,“99 : 99 : 99”とする。午前0時のTIME$の値は“00 :
00 : 00”とする。
UCASE$ (a$) a$に結び付いた値の中の英小文字を,すべて対応する英大文字で置き換えて得られる文字
列。
USING$ (a$, x) a$に結び付いた値を書式項目として用いて,数値式xの値を書式化した文字列表現(10.4
参照)。書式付き出力の例外状態についての規定(10.4.5参照)も適用する。
VAL (a$) a$に結び付いた文字列が数値定数の形であるとき,その数値定数の値。文字列の前後の空
白は,無視される。数値定数を評価した結果が下位けたあふれになったときは,ゼロを返
す。
例 VAL (”123.5”) =123.5
VAL (”2E−99”) ······ゼロになりうる
VAL (”MCMXVII”) ······例外状態
6.4.5 例外状態 例外状態は,次による。
(1) ALの実引き数の値が正しい数値定数の形でない。(4001,続行不能。)
(2) ALの実引き数の値が正しい数値定数の形であるが,その評価があふれを起こす。(1004,続行不能。)
(3) HR$の実引き数の値が適切な範囲の中にない。(4002,続行不能。)
(4) RDの実引き数の値が正しい1文字でも正しい呼び名でもない。(4003,続行不能。)
(5) EPEAT$の第2実引き数の指標の値吻が負である。(4010,続行不能。)
参考 ANSI X3.113では,“第2実引き数の値が負である”となっているが,誤りと考えられるので訂
正した。
6.4.6 注意 注意は,次による。

――――― [JIS X 3003 pdf 36] ―――――

                                                                                             33
X 3003-1993
(1) 関数VALの絶対値がゼロでなく,かつ絶対値が機械最小値よりも小さい場合,処理系が下位けたあふ
れの例外状態(1504,続行可能。ゼロで置き換えて処理を続ける。)として報告し,例外処理区による
処理を許すことを推奨する。
(2) ATE$及びTIME$で用いる基準時間帯 (time zone) は,処理系定義とする。
(3) 関数UCASE$及びLCASE$の効果は,英字についてだけ,完全に定義する。アクセント記号付きの文
字のような非プログラム文字に対する効果は,処理系定義とする。
参考 Full BASICの規格の各国版は,地域的なアルファベットの利用に適合するために,この効果を
規定してもよい。

6.5 文字列let文

6.5.1  概要 let文 (let-statement) は,文字列式 (string-expression) の値を計算し,文字列変数の並びに対
して同時的に代入する。
6.5.2 構文 構文は,次による。
(1) et文⊃文字列let文
(2) 文字列let文=LET 文字列変数名並び 等号 文字列式
(3) 文字列変数名並び=文字列変数名{コンマ 文字列変数名}*
6.5.3 例 構文の例を次に示す。
LET A$=”ABC” (2)
LET A$(I)=B$(3:4) (2)
LHT A$,B$=”NEGATIVE DISCRIMINANT” (2)
LET C$(7:10)=”wxyz” (2)
LET A$=”ABCD” && (2)
& ”XYZ”
6.5.4 意味 意味は,次による。
(1) 文字列変数名並びの文字列変数名に添字や部分文字列指定がある場合,それらは左から右に順に評価
される。次いで,右辺の文字列式(6.3参照)が評価される。最後に,文字列式の値が,文字列変数名
並びの各文字列変数に左から右に順に代入される。
(2) 左辺の文字列変数名に部分文字列指定があるときは,その文字列変数の値のうち,部分文字列指定で
指定された部分文字列が,右辺の値で置換される。この置換の結果,文字列変数の値の長さが,変わ
ることもありうる。
例 A$=“1234”であるとき,A$ (m, n) への代入は,次のようになる。
代入するlet文 結果の値
LET A$(2:3)=”32” “1324”
LET A$(2:3)=” ” “14”
LET A$(2:3)=A$(1:2) “1124”
LET A$(2:1)=”5” “15234”
6.5.5 例外状態 例外状態は,次による。
(1) 文字列変数に対する値の代入が文字列あふれを起こす。(1106,続行不能。)
6.5.6 注意 文字列変数名並びにおける文字列変数への代入の順序は,重要である。例えば,次の文で代
入の順序が規格と異なるときには,結果が異なりうる。
LET A$(1:2), A$(2:5)=”X”

――――― [JIS X 3003 pdf 37] ―――――

34
X 3003-1993

6.6 文字列宣言

6.6.1  概要 option文 (option-statement) は,文字集合における文字の大小順序を指定する。
declare文 (declare-statement) は,プログラム単位における個々の文字列変数の値の最大長を設定する。
6.6.2 構文 構文は,次による。
(1) 選択子⊃COLLATE [{NATIVE|STANDARD}]
(2) 宣言指定⊃string宣言
(3) tring宣言=STRING 最大長指定? 文字列宣言{コンマ 文字列宣言}*
(4) 最大長指定=星印 符号なし整数
(5) 文字列宣言⊃文字列単純宣言
(6) 文字列単純宣言=文字列単純変数名 最大長指定?
(7) ollate選択子のあるoption文を書く場合には,同じプログラム単位中のどの文字列式よりも早い位置,
どのdata文よりも早い位置,かつ文字列配列名又は文字列変数名を指定した,どのdim文及びdeclare
文よりも早い位置に書かなければならない。
参考 ANSI X3.113には,data文に関する規定がないが,誤りであるので,TIBによって訂正した。
(8) ollate選択子は,一つのプログラム単位中では,たかだか1回だけ書くことができる。
(9) 一つの文字列単純変数名は,一つのプログラム単位中では,たかだか1回だけdeclare文で宣言でき
る。仮引き数である文字列単純変数名を,declare文で宣言してはならない。
6.6.3 例 構文の例を次に示す。
COLLATE NATIVE (1)
STRING*8 last name$*20,first name$,middle name$ (3)
6.6.4 意味 意味は,次による。
(1) ollate選択子は,文字列を比較したり(8.1参照),関数CHR$や関数ORDの値を計算したり(6.4参
照)するのにプログラム単位中で用いる文字の大小順序を指定する。OPTION COLLATE NATIVEは,
親システム固有の大小順序を用いることを指定する。OPTION COLLATE STANDARDは,表4.1(163
ページ)にある文字の順序を用いることを指定する。プログラム単位中にcollate選択子がないときに
は,STANDARDが想定される。
(2) tring宣言で宣言された文字列単純変数は,処理系定義の値以下の最大長をもつことができる。最大
長は,次の優先順位で決められる。
(a) その変数名の文字列宣言における最大長指定
(b) その変数名を含むdeclare文の機能語STRINGの直後に書く最大長指定
(c) 処理系定義の最大長
(3) 文字列の最大長は,文字列変数に代入できる文字列の値の最大文字数を保証し,それより長い値を代
入しようとすると,文字列あふれの例外状態になることを指定する。処理系は,省略時想定の最大長
を,132文字以上としなければならない。
(4) 最大長を0と宣言すると,その文字列変数の保持できる値の最大長が,ゼロになる。すなわち,空文
字列だけを保持する。
6.6.5 例外状態 なし。
6.6.6 注意 固有の大小順序は,標準の大小順序と同じであってもよい。
参考 Full BASICの規格の各国版は,地域的なアルファベットの特定の利用に適合するために,collate
選択子を拡張して規定してもよい。

――――― [JIS X 3003 pdf 38] ―――――

                                                                                             35
X 3003-1993

7. 配列

7.0 概要

 配列 (array) は,数値又は文字列の指標付けられた集まりとする。配列要素 (array-element) は,
数値用又は文字列用のスカラ演算で操作できる(5.及び6.参照)。更に,配列全体は,配列用の文で操作で
きる。

7.1 配列宣言

7.1.1  概要 dim文 (dimension-statement) 又はdeclare文 (declare-statement) によって,配列を宣言する。
(1) ption文 (option-statement) のbase選択子は,一つのプログラム単位の中の,下限値 (lower bound) が
明示的に宣言されていないすべての配列の添字 (subscript) に対して,暗黙の下限値を定義する。option
文で宣言して,すべてのそのような配列の添字の下限値を,ゼロ又は1にできる。option文による宣
言がない場合には,暗黙の下限値は1とする。
(2) 配列の次元 (dimension) は,13次元とする。次元数及び各次元の添字の上下限は,declare文又は
dim文で宣言する。仮配列以外のすべての配列名は,これらの文でただ1回だけ宣言しなければなら
ない。添字の下限値は,明示的に宣言しないと,base選択子によって1又はゼロとなる。添字の上限
値 (upper bound) は,必ず明示的に宣言しなければならない。
例えば,110,19801989又は−90の添字をもつ1次元の配列は,いずれも10個の要素からな
る。各次元に対して110の添字をもつ3次元の配列は,1 000個の要素からなる。
(3) edare文は,文字列変数・文字列配列 (string array) の文字列の最大長の宣言及び文字列配列・数値配
列 (numeric array) の配列宣言に用いることができる。dim文は,配列宣言に用いることはできるが,
文字列配列の文字列の最大長を宣言することはできない。
7.1.2 構文 構文は,次による。
(1) im文=DIM 配列宣言並び
(2) 配列宣言並び=配列宣言{コンマ 配列宣言}*
(3) 配列宣言=数値配列宣言|文字列配列宣言
(4) 数値配列宣言=数値配列名 上下限指定部
(5) 上下限指定部=左括弧 上下限指定{コンマ 上下限指定}* 右括弧
(6) 上下限指定=整数 TO 整数|整数
(7) 整数=符号? 符号なし整数
(8) 文字列配列宣言=文字列配列名 上下限指定部
(9) 選択子⊃BASE [{0|1}]
(10) 文字列宣言⊃文字列配列宣言 最大長指定?
(11) 数値宣言⊃数値配列宣言
(12) 数値関数引用⊃ MAXSIZE 最大寸法実引き数部|SIZE 上下限実引き数部|
LBOUND 上下限実引き数部|UBOUND 上下限実引き数部
(13) 最大寸法実引き数部=左括弧 実配列名 右括弧
(14) 上下限実引き数部=左括弧 実配列名{コンマ 指標}? 右括弧
(15) 上下限指定部の中の上下限の個数は,13とする。
(16) 定義関数副プログラム,プログラム又は絵定義の仮配列となっている配列を,declare文又はdim文で
宣言してはならない。仮配列は,仮引き数部に書くことによって宣言される。仮配列以外のすべての
配列は,その配列又はその配列の要素を参照するどの文よりも早い位置のdeclare文又はdim文で宣
言しなければならない。配列及びその要素への参照は,declare文,dim文又は仮引き数におけるその

――――― [JIS X 3003 pdf 39] ―――――

36
X 3003-1993
配列の宣言と,次元数が一致しなければならない。
(17) 一つの配列に対する配列宣言は,一つのプログラム単位の中に,ただ1回だけ書かなければならない。
(18) 上下限指定において下限値を書く場合には,下限値(第1番目の整数)は,上限値(第2番目の整数)
以下の値でなければならない。
下限値を書かない場合には,上限値は,base選択子によるゼロ又は1の暗黙の下限値未満であって
はならない。
(19) ase選択子のあるoption文を書く場合には,同じプログラム単位の中の,どのdeclare文,どのdim
文及び数値配列値又は文字列配列値を用いるどのmat文よりも早い位置に書かなければならない。
(20) ase選択子は,一つのプログラム単位の中では,たかだか1回だけ書くことができる。
(21) 実配列が1次元として宣言されている場合にだけ,上下限実引き数部の指標を省略することができる。
7.1.3 例 構文の例を次に示す。
DIM A(6),B(10, 10),B$(100),D(1 TO 5,1980 TO 1989) (1)
DIM A$(4, 4),C(−5 TO 10) (1)
A$(3 TO 21) * 8 (10)
SIZE(A,1) (12)
SIZE(B$,2) (12)
SIZE(X) (12)
LBOUND(A) (12)
UBOUND(C$,2) (12)
7.1.4 意味 意味は,次による。
(1) 配列宣言 (array-declaration) は,上下限指定部 (bounds) に書いた上下限指定 (bounds-range) の個数1
3に従って,その配列が13次元であることを宣言する。更に,上下限指定部は,その配列の添字
がとりうる最大値(及び指定されれば最小値)を指定する。添字の最小値が明示的に宣言されておら
ず,プログラム単位中にbase選択子もない場合には,添字の最小値は暗黙的に1と宣言される。
(2) ption文のbase選択子は,プログラム単位に対して局所的とする。base選択子は,それを含むプログ
ラム単位中のすべての配列の添字に対して共通の最小値を宣言する。ただし,添字の最小値が明示的
に宣言されているものは除く。
(3) プログラムの実行がdim文の行に到達すると,何もしないで次の行に進む。
(4) 文字列宣言の文字列配列宣言に,最大長指定を書くことができる。このとき,最大長指定は,文字列
配列の各要素の最大長を定める。文字列宣言に最大長指定を書かなければ,文字列単純変数の場合
(6.6.4) と同様に,string宣言の最大長指定が有効になる。これらの明示的な最大長指定がない場合に
は,処理系定義の最大長が有効になる。
(5) を配列名としnを指標とするとき,SIZE (a, n) の値は,aのn番目の添字に対する参照可能な値の
現在の個数とする。このとき,nは,最も近い整数値に丸められる。aの添字は,左から右に,1から
順に番号付けられる。SIZE (a) の値は,配列aの全要素の現在の個数とする。
(6) AXSIZE (a) の値は,配列aの配列宣言によって許される全要素の個数とする。
(7) を配列名としnを指標とするとき,LBOUND (a, n) の値は,aのn番目の添字に許される現在の最
小値とする。同じくUBOUND (a, n) の値は,aのn番目の添字に許される現在の最大値とする。関数
SIZEの場合と同様に,nは,最も近い整数値に丸められ,aの添字は,左から右に,1から順に番号
付けられる。関数LBOUND及び関数UBOUNDは,実引き数がベクトル(1次元配列)である場合に

――――― [JIS X 3003 pdf 40] ―――――

次のページ PDF 41

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

  • ISO/IEC 10279:1991(IDT)

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

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