この規格ページの目次
12
X 3003-1993
4. プログラム要素
4.0 概要
BASICプログラムは,行 (line) の列とする。行は,文 (statement) を含む。各行自体は,文
字 (character) の列とする。
4.1 文字
4.1.1 概要 BASIC用の文字集合 (character set) は,JIS X 0201の文字で構成する。
4.1.2 構文 構文は,次による。
(1) プログラム文字=引用符|非引用符文字
(2) 引用文字=二連引用符|非引用符文字
(3) 非引用符文字= 感嘆符|番号記号|ドル記号|パーセント記号|アンド記号|アポストロフィ|
左括弧|右括弧|星印|コンマ|斜線|コロン|セミコロン|小号|等号|大号|
疑問符|山記号|下線|単純文字
(4) 二連引用符=引用符 引用符
(5) 単純文字=空白|単語文字
(6) 単語文字=数字|英字|小数点|正号|負号
(7) 数字=0|1|2|3|4|5|6|7|8|9
(8) 英字=英大文字|英小文字
(9) 英大文字= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|
X|Y|Z
(10) 英小文字= a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
(11) 非プログラム文字=[処理系定義]
(12) 構文の生成規則によって生成されるプログラムは,次の場合にだけ空白を含む。
(a) 注釈文字列の中
(b) 引用文字列,単純文字列及び即値文字列の中
(c) 構文単位名“空白”によって,空白の存在が明示的に示されているところ
(13) 更に,次の場所以外なら,どこに空白を用いてもよい。これは,プログラムの実行には何も影響を与
えない。プログラムの外観を整え,読みやすくするために用いる。空白をおいてはならない場所は,
次のとおりとする。
(a) 行番号の直前
(b) 行番号の途中
(c) 機能語のつづりの途中
(d) 識別名のつづりの途中
(e) 数値定数の途中
(f) 2文字の比較記号の途中
(g) 行継続における行末とアンド記号との間
参考 この(g)項は,TIBによる。
(14) 引用文字列,単純文字列及び書式文字列の中の空白は,意味をもつ。単純文字列に先行又は後続する
空白の列は,その文字列の一部とはみなさない。
(15) プログラム中の機能語の直前及び直後の文字は,英字,数字,下線又はドル記号であってはならない。
機能語の直後が行末 (end-of-line) であってもよい。
4.1.3 例 なし。
――――― [JIS X 3003 pdf 16] ―――――
13
X 3003-1993
4.1.4 意味 意味は,次による。
(1) 英字 (letter) は,情報交換用符号 (JIS X 0201) の位置4/15/10にあるローマ文字の英大文字及び位
置6/17/10にあるローマ文字の英小文字を用いる。
備考 これらの規定がJIS X 0201を引用するのは,文字を明確に指定するためである。符号を定める
趣旨ではない。
(2) 数字 (digit) は,情報交換用符号の位置3/03/9にある数字を用いる。
(3) その他のプログラム文字は,情報交換用符号の位置2/02/15,3/103/15,5/14及び5/15にある図形
文字を用いる。
(4) 文字の名称は,表4.1(163ページ)による。文字の標準の大小順序 (collating sequence) は,表4.1に
よる。標準 (standard) の大小順序は,省略時想定の場合及びcollate選択子で明示的にSTANDARDを
指定した場合に用いる(6.4,6.6及び8.1参照)。固有 (native) の大小順序は,処理系定義とする。
(5) 英字以外の文字は,それ自身を表す。英字は,引用文字列,単純文字列及び行入力応答の中ではそれ
自身を表す。識別名及び機能語において,対応する英大文字と英小文字は等価とする。引用文字列中
の非引用符文字は,それ自身を表す。引用文字列中の二連引用符は,文字列の値としては1文字の引
用符を表す。
4.1.5 例外状態 なし。
4.1.6 注意 注意は,次による。
(1) 4.1.2(11)の非プログラム文字 (other-character) は,処理系が定めて,BASIC用の文字集合に含めること
ができる。非プログラム文字は,入力の要求に対するデータとして供給したり,関数CHR$(6.4参照)
の値として生成したりして,文字列の値中に用いることができる。これらの非プログラム文字の効果
は,処理系定義とする。
(2) 非プログラム文字(行末を示す文字は除く。)を含むプログラムは,規格合致プログラムではない。
4.2 プログラム,行及び区
4.2.1 概要 プログラムの構成は,次による。
(1) ASICプログラムは,行 (line) の列とする。各行は,一意な行番号 (line-number) を含まなければな
らない。行番号は,プログラムの編集用及びその行に含まれる文 (statement) の名札 (label) として使
用される。
(2) 一つのBASICプログラムは,幾つかのプログラム単位 (program-unit) からなる。先頭のプログラム単
位を主プログラム (main-program) という。主プログラムの最後の行は,end行 (end-line) でなければ
ならない。主プログラムに続いて,0個以上の外部副プログラム定義(external-sub-def,9.2参照),外
部関数定義(external-function-def,9.1参照)又は外部絵定義(external-picture-def,13.5参照)を書く。
一つのBASICプログラムは,並行単位(parallel-section,14.1参照)の一つの列を含んでいてもよい。
この場合,各並行単位は,独立したプログラム単位とする。
(3) ASICプログラム中で,ある種の行の論理的な集まりを区 (block) という。
4.2.2 構文 構文は,次による。
(1) プログラム⊃program行? 主プログラム 外部手続き単位*
(2) rogram行=行番号 PROGRAM プログラム名 値仮引き数部? 行末部
(3) プログラム名=ルーチン識別名
(4) 主プログラム=手続き区* end行
(5) 手続き区=内部手続き定義|区
――――― [JIS X 3003 pdf 17] ―――――
14
X 3003-1993
(6) 内部手続き定義⊃内部関数定義|内部副プログラム定義|handler区
(7) 区⊃単純行|繰返し区|if区|select-case区|image行|保護区
(8) 単純行=行番号 単純文 行末部
(9) 行番号=数字 数字*
(10) 単純文⊃宣言文|単純実行文|条件文
(11) 宣言文⊃空文|data文|declare文|dim文|option文|rem文
(12) 単純実行文⊃数値関数定義let文|文字列関数定義let文|例外処理区戻り文|ask文|break文|
call文|cause-exception文|chain文|close文|debug文|erase文|exit-do文|exit-for文|
exit-function文|exit-handler文|exit-sub文|gosub文|goto文|input文|let文|line-input文|
mat文|mat-input文|mat-line-input文|mat-print文|mat-read文|mat-write文|open文|
print文|randomize文|read文|restore文|return文|set文|stop文|trace文|write文
(13) top文=STOP
(14) 条件文=if文|on-gosub文|on-goto文
(15) 行末部=行末注釈? 行末
(16) 行末=[処理系定義]
(17) nd行=行番号 end文 行末部
(18) nd文=END
(19) 外部手続き単位=注釈行* 外部手続き定義
(20) 外部手続き定義⊃外部関数定義|外部副プログラム定義
(21) 注釈行=行番号{空文|rem文}行末
(22) 行⊃単純行|注釈行|case行|case-else行|def行|do行|else行|elseif行|end行|
end-function行|end-handler行|end-if行|end-select行|end-sub行|end-when行|
external-function行|external-sub行|for行|内部function行|handler行|if-then行|image行|
loop行|next行|program行|select-case行|内部sub行|use行|when-in行|when-use行
(23) プログラム単位⊃主プログラム|外部手続き定義
(24) 行継続=アンド記号 空白* 行末部 アンド記号
(25) プログラムは,行の列とする。実時間プログラム以外のプログラムでは,行のうちの一つだけは,end
行でなければならない。先頭からend行までの行(end行を含む。)が主プログラムを構成する。
(26) 行番号は,ゼロであってはならない。先行するゼロ列は,何も効果をもたない。行は,行番号の値の
昇順に並んでいなければならない(16.参照)。プログラム単位中で行番号を引用するときには,その
プログラム単位中の行の行番号を参照しなければならない。行番号の数字は,15文字とする。行番
号の値は,150000とする。
(27) 行末 (end-of-line) の検出方法は,処理系定義とする。行末は,例えば復帰文字,復帰文字と改行文字
の連なり,物理記録の終りなどとしてもよい。
(28) プログラム中の一つの物理行は,132個以下の文字からなる。行末の指示は,この文字の個数には数
えない。
(29) 空白を用いてよい場所では,空白を行継続 (line-continuation) で置き換えてもよい。この場合,空白と
しての効果しかもたない。ただし,引用文字列,単純文字列,即値文字列,注釈文字列(4.1及び4.3
参照)及び行継続の中の空白は除く。
参考 この“行継続”という言葉は,TIBによる。
――――― [JIS X 3003 pdf 18] ―――――
15
X 3003-1993
(30) rogram行 (program-name-line) の値仮引き数を,主プログラム中又は実時間プログラムの先頭の並行
単位(14.1参照)中のdim文又はdeclare文で,明示的に宣言してはならない。
4.2.3 例 構文の例を次に示す。
100 PROGRAM Graphit & ! This program draws a graph
& (x, & ! x is x-coordinate (2)
& y) ! y is y-coordinate
999 END (15)
4.2.4 意味 意味は,次による。
(1) rogram行は,chain文の作用対象 (operand) となる(9.3参照)。プログラム名と,chain文中のプロ
グラム指示名 (program-designator) との間の対応付けは,処理系定義とする。program行の値仮引き
数部の評価は,9.1による。その有効範囲は,主プログラム又は先頭の並行単位(14.1参照)とする。
単独で実行されるプログラムのプログラム名は,何も効果をもたない。単独で実行されるプログラム
のprogram行の値仮引き数部の効果は,処理系定義とする。
(2) プログラムは,その先頭の行から始め,次のいずれかになるまで,順番に実行される。
(a) 行の実行によって,他の動作が指示される。
(b) 例外状態になる。ただし,続行可能な例外状態であって,利用者がそれに対して例外処理区を定義
していない場合を除く。
(c) hain文が実行される。
(d) top文又はend文が実行される。
(3) nd文 (end-statement) は,主プログラムの物理的な終りを示す。これを実行すると,プログラムの実
行が終了する。stop文 (stop-statement) を実行すると,プログラムの実行が終了する。
4.2.5 例外状態 なし。
4.2.6 注意 プログラム単位中にない行番号の参照は,構文誤りとする。処理系は,これを例外状態とし
て扱ってもよい。その場合には,このことを文書化しておかなければならない。
4.3 プログラムの注釈
4.3.1 概要 BASICプログラムには,プログラムの行の終りに,又は独立したrem文 (remark-statement)
によって,注釈 (comment) を付けることができる。
4.3.2 構文 構文は,次による。
(1) em文=REM 注釈文字列
(2) 注釈文字列=プログラム文字*
(3) 空文=行末注釈
(4) 行末注釈=感嘆符 注釈文字列
(5) 注釈文字列の中では,行継続をしてはならない。
4.3.3 例 構文の例を次に示す。
REM FINAL CHECK (1)
!COMPUTE AVERAGE (4)
4.3.4 意味 意味は,次による。
(1) プログラムの実行がrem文又は空文 (null-statement) の行に到達すると,何もしないで次の行に進む。
(2) 行末注釈 (tail-comment) は,それを含む行の実行には何も効果を与えない。行末注釈中の注釈文字列
――――― [JIS X 3003 pdf 19] ―――――
16
X 3003-1993
(remark-string) は,ただその行の注釈としての意味をもつだけとする。
4.3.5 例外状態 なし。
4.3.6 注意 なし。
4.4 識別名
4.4.1 概要 識別名 (identifier) は,変数,配列,配列値,関数,プログラム,副プログラム,例外処理
区及び絵を命名する。実時間プログラム (real-time-program) においては,並行単位,事象,構造及び域を
も命名する(14.参照)。
4.4.2 構文 構文は,次による。
(1) 識別名⊃数値識別名|文字列識別名|ルーチン識別名
(2) 数値識別名=英字 識別名文字*
(3) 識別名文字=英字|数字|下線
(4) 文字列識別名=英字 識別名文字* ドル記号
(5) ルーチン識別名=英字 識別名文字*
(6) 識別名は,文字列識別名の場合のドル記号をも含めて,31文字以内とする。
(7) 数値識別名 (numeric-identifier) は,数値単純変数,13次元の数値配列,数値関数又は数値配列値を
命名する。一つのプログラム単位中では,一つの数値識別名でこれらのうちの二つ以上の対象を命名
してはならない。同様に文字列識別名 (string-identifier) は,文字列単純変数,13次元の文字列配列,
文字列関数又は文字列配列値を命名する。一つのプログラム単位中では,一つの文字列識別名でこれ
らのうちの二つ以上の対象を命名してはならない。
(8) 識別名は,内部副プログラム定義,内部関数定義,handler区又は内部絵定義を命名する。一つのプ
ログラム単位中では,一つの識別名でこれらのうちの二つ以上の対象を命名してはならない。
(9) 一つのプログラム中では,一つのルーチン識別名 (routine-identifier) は,外部関数定義,外部副プログ
ラム定義,外部絵定義,主プログラム又は並行単位の二つ以上の対象を命名してはならない。
(10) 外部関数定義を命名する数値識別名を,ルーチン識別名として使ってはならない。
参考 この規格中の“ルーチン識別名”という用語は,“数値識別名”という用語と完全に使い分けら
れているわけではない。
(11) 引き数のない組込み関数又は配列値の名前CON,DATH,EXLINE,EXTYPE,IDN,MAXNUM,PI,
RND,TIME,TRANSFORM及びZERは,ほかの対象を命名する数値識別名として使ってはならない。
引き数のない組込み関数又は配列値の名前DATE$,NUL$及びTIME$は,ほかの対象を命名する文字
列識別名として使ってはならない。
機能語NOT,ELSE,PRINT及びREMは,識別名として使ってはならない。
更に,部分集合中核機能単位においては,次の機能語もまた,識別名として使ってはならない。
ACCESS, AND, ANGLE, AREA, ARITHMETIC, ASK, AT, BASE, BEGIN, BREAK, CALL, CASE,
CHAIN, CLEAR, CLIP, CLOSE, COLLATE, COLOR, DATA, DATUM, DEBUG, DECIMAL, DECLARE,
DEF, DEGREES, DEVICE, DIM, DISPLAY, DO, ELAPSED, ELSEIF, END, ERASE, ERASABLE, EXIT,
EXTERNAL, FILETYPE, FOR, FUNCTION, GO, GOSUB, GOTO, GRAPH, IF, IMAGE, INPUT,
INTERNAL, IS, LENGTH, LET, LINE, LINES, LOOP, MARGIN, MAT, MISSING, NAME, NATIVE, NEXT,
NUMERIC, OFF, ON, OPEN, OPTION, OR, ORGANIZATION, OUTIN, OUTPUT, POINT, POINTER,
POINTS, PROGRAM, PROMPT, RADIANS, RANDOMIZE, READ, RECSIZE, RECTYPE, REST,
RESTORE, RETURN, SAME, SELECT, SEQUENTIAL, SET, SETTER, SIZE, SKIP, STANDARD, STATUS,
――――― [JIS X 3003 pdf 20] ―――――
次のページ PDF 21
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記