この規格ページの目次
42
X 3003-1993
(9) 非等=小号 大号|大号 小号
(10) 非小=大号 等号|等号 大号
(11) 非大=小号 等号|等号 小号
8.1.3 例 構文の例を次に示す。
NOT XA<=X AND X<=B (3)
1<=I AND I<=10 AND A(I)=X (3)
IM OR A(I)8.1.4 意味 意味は,次による。
(1) “小さいか等しい”は,非大で表す。“大きいか等しい”は,非小で表す。“等しくない”は,非等で
表す。“大きい”,“小さい”及び“等しい”は,それぞれ大号,小号及び等号で表す。
(2) 二つの数値式は,同じ値のときだけ,等値とする。
(3) 二つの文字列式は,その両方の値の長さが同じで,かつ対応する位置の文字がすべて同じであるとき
だけ,等値とする。
(4) 文字列式を含む論理式の評価で,比較の“小さい”は,“大小順序 (collating sequence) においてより
早く現れる”ことと定義し,他の比較もそれと同様に定義する。詳しくは,次による。
(a) 二つの文字列が同じ長さであって等値でない場合,両方の異なる文字のうちで最左端の文字位置を
比べ,一方の文字が指定された大小順序(6.6参照)においてより早く現れれば,それを含む文字列
は他方の文字列より小さいとする。
(b) 二つの文字列の長さが異なる場合,一方の長さが0文字であるか,又は一方が他方の先頭からの部
分文字列であるとき,長さの短いほうがもう一方に比べて“小さい”とする。
(c) それ以外で長さの異なる二つの文字列の大小関係は,短いほうの文字列の内容と,長いほうの文字
列の先頭から短いほうと同じ長さ分だけ取り出した文字列の内容との比較によって定義する。
(5) 演算子AND,OR及びNOTの優先順位は,構文の規定に従う。すなわち,NOTは直後の論理一次子
(relational-primary) に作用し,ANDは直前及び直後の論理項 (relational-term) に作用し,ORは直前及
び直後の論理積 (conjunction) に作用する。
(6) 論理式の評価の順序は,次のとおりとする。
(a) 論理式は,それを構成する論理和 (disjunction) の真理値をとる。
(b) 論理和に直接含まれる論理積は,真である論理積が見つかるか,又はすべての論理積の評価が終わ
るまで,左から右に順に評価される。そして,真である論理積が見つかったところで論理和全体が
真と評価され,残りの論理積は評価されない。真である論理積が見つからないと,その論理和は,
偽となる。
(c) それぞれの論理積において,その中に直接に含まれる論理項は,偽である論理項が見つかるか,又
はすべての論理項の評価が終わるまで,左から右に順に評価される。そして,偽である論理項が見
つかったところで論理積全体が偽と評価され,残りの論理項は評価されない。すべての論理項が真
であれば,その論理積は,真となる。
(d) それぞれの論理項において,その中に直接に含まれる論理一次子が評価され,NOTが直接に含まれ
るときは,論理一次子の真理値が逆転する。結果の値がその論理項の値となる。
(e) 比較式 (comparison) である論理一次子は,各種の比較について(4)の規定に従って評価される。比較
式でない論理一次子は,その中に直接に含まれる論理式の真理値をとる。この論理式は,(6)の規定
――――― [JIS X 3003 pdf 46] ―――――
43
X 3003-1993
を再び適用して評価される。
8.1.5 例外状態 なし。
8.1.6 注意 論理式においては,式の評価に必要な部分だけを評価する。例えば,配列Aの上下限が1
から10までとすると,
1<=X AND X=10 AND A(X)=KEY
は,範囲外添字の例外状態には決してならない。
8.2 制御文
8.2.1 概要 制御文 (control statement) は,文の通常の実行順序を変更し,その文の次の行からではなく,
指定された行から実行を続ける。
(1) oto文 (goto-statement) は,無条件分岐 (unconditional transfer) を行う。
(2) n-goto文 (on-goto-statement) は,選ばれた行から実行を続ける。
(3) osub文 (gosub-statement) とreturn文 (return-statement) は,サブルーチン呼出しに用いる。
(4) n-gosub文 (on-gosub-statement) とreturn文は,選択的なサブルーチン呼出しに用いる。
8.2.2 構文 構文は,次による。
(1) 行番号分岐=gosub文|goto文|if文|データ存否|on-gosub文|on-goto文
(2) oto文= [{GOTO|GO TO}] 行番号
(3) n-goto文=ON 指標 [{GOTO|GO TO}] 行番号{コンマ 行番号}*{ELSE 単純実行文}?
(4) osub文= [{GOSUB|GO SUB}] 行番号
(5) eturn文=RETURN
(6) n-gosub文=ON 指標 [{GOSUB|GO SUB}] 行番号{コンマ 行番号}*{ELSE 単純実行
文}?
8.2.3 例 構文の例を次に示す。
GO TO 999 (2)
GOTO 999 (2)
ON L+I GO TO 400,400,500 (3)
ON X GO TO 100,200,150,9999 ELSE LET A=1 (3)
GO SUB 5000 (4)
GOSUB 5160 (4)
ON A+7 GOSUB 1000,2000,7000,4000 (6)
ON F1−2 GOSUB 4360,4460,4660 ELSE PRINT F$ (6)
8.2.4 意味 意味は,次による。
(1) oto文は,指定された行番号の行から実行を続ける。
(2) n-goto文を実行すると,指標が評価され,その値が最も近い整数に丸められる。この整数の値を使っ
て,GOTOに続く行番号の並びの中から,この整数番目の行番号を選ぶ(このとき,並び中の左端の
行番号を1番目とする)。そして,その選ばれた行番号の行から実行を続ける。
on-goto文がelse句をもち,かつその指標の丸められた値が1より小さいか又は並び中の行番号の個
数より大きいときには,ELSEに続く単純実行文を実行する。その単純実行文で別の行へ分岐するこ
とがなければ,通常の実行順序でon-goto文の次の行から実行を続ける。
(3) osub文,on-gosub文及びreturn文の実行は,行番号の棚 (stack) の概念を用いて説明する。(行番号
の棚は概念上のものであって,この規格は,処理系がこの方法を用いることを要求しない。処理系は,
――――― [JIS X 3003 pdf 47] ―――――
44
X 3003-1993
ほかの方法で実現してもよい。)
(a) 行番号の棚は,プログラム単位又は内部手続き定義の各回の呼出しごとに一つずつ想定される。プ
ログラム単位又は内部手続き定義の各回の呼出しで,最初にgosub文又はon-gosub文を実行するま
では,その呼出しに対する棚は空とする。
(b) osub文を実行するたびに,gosub文自身の行番号が棚のいちばん上に積まれ,gosub文で指定した
行番号の行から,そのプログラム単位又は内部手続き定義の実行を続ける。
(c) n-gosub文を実行すると,指標が評価され,その値が最も近い整数に丸められる。この整数の値を
使って,GOSUBに続く行番号の並びの中からこの整数番目の行番号を選ぶ(このとき,並び中の
左端の行番号を1番目とする。)。そして,on-gosub文自身の行番号が棚のいちばん上に積まれ,指
標で選ばれた行番号の行から,そのプログラム単位又は内部手続き定義の実行を続ける。
(d) n-gosub文がelse句をもち,かつその指標の丸められた値が1より小さいか又は並び中の行番号の
個数より大きいときには,ELSEに続く単純実行文を実行する。このときには,行番号の棚は変わ
らない。その単純実行文で別の行へ分岐することがなければ,通常の実行順序でon-gosub文の次の
行から実行を続ける。
(e) eturn文を実行するたびに,棚のいちばん上にある行番号を取り除き,その行番号の行の次の行か
ら,そのプログラム単位又は内部手続き定義の実行を続ける。
(f) 内部手続き定義中のgosub文,on-gosub文及びreturn文は,その内部手続き定義の棚だけを使用す
る。それ以外のgosub文,on-gosub文及びreturn文は,その文を含むプログラム単位の棚だけを使
用する。
(g) プログラム単位又は内部手続き定義の実行を終了する時に,gosub文及びon-gosub文の実行回数と,
return文の実行回数とが等しくなっている必要はない。プログラム単位又は内部手続き定義のその
回の呼出しに想定された行番号の棚は,それぞれの実行の終了時に空にされる。
8.2.5 例外状態 例外状態は,次による。
(1) lse句のないon-goto文又はon-gosub文の指標の丸められた値が,1より小さい又は並び中の行番号
の個数より大きい。(10001,続行不能。)
(2) 同じプログラム単位又は内部手続き定義の中で,対応するgosub文又はon-gosub文を実行していない
のに,return文を実行しようとする。(10002,続行不能。)
8.2.6 注意 注意は,次による。
(1) 行番号分岐という構文単位名は,行番号を参照する分岐を表すときにだけ用いる。それ以外の分岐を
表す生成規則に用いることはない。
(2) 行番号分岐中で,プログラム単位中にない行番号を参照すると,それは構文誤りとする(4.2参照)。
したがって,この規格は,そのような参照に対する例外状態を規定しない。しかし,処理系は,これ
を例外状態として扱ってもよい。その場合には,規格に合致しないそのようなプログラムの効果を,
文書化しておかなければならない。
8.3 繰返し構造
8.3.1 概要 繰返し区 (loop) は,一連の文を反復実行する。do区 (do-loop) は,任意の出口条件
(exit-condition) のある繰返し区を構成する。for文 (for-statement) とnext文 (next-statement) は,回数制御
される繰返し区を構成する。
8.3.2 構文 構文は,次による。
(1) 繰返し区=do区|for区
――――― [JIS X 3003 pdf 48] ―――――
45
X 3003-1993
(2) o区=do行 do本体
(3) o行=行番号 do文 行末部
(4) o文=DO 出口条件?
(5) 出口条件= [{WHILE|UNTIL}] 論理式
(6) o本体=区* loop行
(7) xit-do文=EXIT DO
(8) oop行=行番号 loop文 行末部
(9) oop文=LOOP 出口条件?
(10) or区=for行 for本体
(11) or行=行番号 for文 行末部
(12) or文=FOR 制御変数名 等号 始値 TO 限界{STEP 増分}?
(13) 制御変数名=数値単純変数名
(14) 始値=数値式
(15) 限界=数値式
(16) 増分=数値式
(17) or本体=区* next行
(18) xit-for文=EXIT FOR
(19) ext行=行番号 next文 行末部
(20) ext文=NEXT 制御変数名
(21) or区 (for-loop) の末尾のnext文の制御変数名 (control-variable) は,そのfor区の先頭のfor文の制御
変数名と同じものとする。
(22) あるfor区のfor本体 (for-body) に含まれる内側のfor区には,外側のfor区と同じ制御変数名を用い
てはならない。
(23) ある繰返し区の外部に書く行番号分岐中の行番号は,その繰返し区のfor本体又はdo本体 (do-body)
の内部にある行を参照してはならない。
(24) xit-do文は,do区の中にだけ書くことができる。exit-for文は,for区の中にだけ書くことができる。
8.3.3 例 構文の例を次に示す。
10 DO WHILE I<=N AND A(I) <> 0
20 LET I=I+1 (2)
30 LOOP
――――― [JIS X 3003 pdf 49] ―――――
46
X 3003-1993
100 DO
110 LET I=I+1
120 PRINT ”MORE ENTRIES (ENTER NO IF NONE)” (2)
130 INPUT A$(I)
140 LOOP UNTIL A$(I)=”NO”
10 DO
20 INPUT X
30 IF 040 PRINT ”INPUT AN INTEGER BETWEEN 1 AND 7”
50 LOOP
100 FOR I=1 TO 10
150 LET A(I)=I (10)
200 NEXT I
FOR I=A TO B STEP −1 (12)
NEXT C7 (20)
8.3.4 意味 意味は,次による。
(1) 出口条件は,機能語WHILEに続く論理式の値が偽であるか,又は機能語UNTILに続く論理式の値が
真であれば,繰返し区から出ることを指示する。
(2) プログラムの実行がdo行に達した時,do行の中に出口条件があれば,それが評価される。出口条件
がないとき,又は出口条件が繰返し区から出ることを指示しないときには,次の行から実行を続ける。
出口条件が繰返し区から出ることを指示するときには,対応するloop行の次の行から実行を続ける。
プログラムの実行がloop行に達した時,loop行の中に出口条件があれば,それが評価される。出口
条件がないとき,又は出口条件が繰返し区から出ることを指示しないときには,対応するdo行から
実行を続ける。出口条件が繰返し区から出ることを指示するときには,loop行の次の行から実行を続
ける。
(3) or文とnext文の動作は,他の文に置き換えて次のとおり規定する。
110 FOR v=始値 TO 限界 STEP 増分
(一連の行)
150 NEXT v
は,次と同等とする。
110 LET own1=限界
120 LET own2=増分
130 LET v=始値
140 DO UNTIL (v−own1)* SGN (own2)>0
(一連の行)
150 LET v=v+own2
――――― [JIS X 3003 pdf 50] ―――――
次のページ PDF 51
JIS X 3003:1993の引用国際規格 ISO 一覧
- ISO/IEC 10279:1991(IDT)
JIS X 3003:1993の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語
JIS X 3003:1993の関連規格と引用規格一覧
- 規格番号
- 規格名称
- JISX0201:1997
- 7ビット及び8ビットの情報交換用符号化文字集合
- JISX0301:2002
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記