この規格ページの目次
37
X 3003-1993
は,配列名を実引き数に書くだけで呼び出すことができる。その場合,LBOUND及びUBOUNDの値
は,それぞれ,ベクトルの添字に許される現在の最小値及び最大値とする。以下で,“ベクトル”とは
1次元の配列,“行列”とは2次元の配列をいう。
7.1.5 例外状態 例外状態は,次による。
(1) 関数SIZEを引用したときの指標の値が,1より小さい又は配列の次元数より大きい。(4004,続行不
能。)
(2) 関数LBOUNDを引用したときの指標の値が,1より小さい又は配列の次元数より大きい。(4008,続
行不能。)
(3) 関数UBOUNDを引用したときの指標の値が,1より小さい又は配列の次元数より大きい。(4009,続
行不能。)
7.1.6 注意 注意は,次による。
(1) im文は,基本BASIC (JIS X 3003-1982) との互換性のために採用された。その機能は,すべてdeclare
文に含まれている。
(2) 処理系が4次元以上の配列を許す場合,関数SIZE,LBOUND及びUBOUNDがそれらの次元に対し
ても機能し,例外状態は,宣言された次元数を超える次元に対してだけ起こさせることを推奨する。
7.2 数値配列
7.2.1 概要 BASICでは,数値配列 (numeric array) は要素ごとに扱うこともできる。しかし,数値配列
を指標付きの要素の集まりとみるだけでなく,一つのものとみなして,全体を一度に操作するほうが便利
な場合がある。BASICは,このような操作を行うための幾つかの標準操作を備える。
7.2.2 構文 構文は,次による。
(1) at文⊃数値mat文
(2) 数値mat文=MAT 数値配列名 等号 数値配列式
(3) 数値配列式={数値配列名 数値配列演算子}? 数値配列名|スカラ乗数 数値配列名|数値配列
値|数値配列関数引用
(4) 数値配列演算子=符号|星印
(5) スカラ乗数=数値一次子 星印
(6) 数値配列値⊃スカラ乗数? [{CON|IDN|ZER}] 再定義上下限指定部?
(7) 再定義上下限指定部=左括弧 再定義上下限指定{コンマ 再定義上下限指定}* 右括弧
(8) 再定義上下限指定={指標 TO}? 指標
(9) 数値配列関数引用= [{TRN|INV}] 左括弧 数値配列名 右括弧
(10) 数値関数引用⊃ DET 左括弧 数値配列名 右括弧|DOT 左括弧 数値配列名 コンマ 数値配
列名 右括弧
(11) 再定義上下限指定部の中の再定義上下限指定の個数は,13とする。
(12) 数値mat文によって値が代入される左辺の数値配列の次元数は,その数値配列式の値の次元数と同じ
でなければならない。
(13) 関数DOTの実引き数として書く数値配列は,1次元でなければならない。
(14) 関数IDNに書く再定義上下限指定部の中の再定義上下限指定の個数は,1又は2とする。
(15) 加算又は減算で用いる二つの数値配列は,同じ次元数をもたなければならない。関数DET,INC又は
TRNの実引き数として書く数値配列は,2次元でなければならない。
(16) 数値配列演算子の星印(行列の乗算)を書くとき,その作用対象の数値配列は,1次元又は2次元と
――――― [JIS X 3003 pdf 41] ―――――
38
X 3003-1993
する。その少なくとも方は,2次元でなければならない。
7.2.3 例 構文の例を次に示す。ここで,A,B及びCは2次元数値配列,X,Y及びZは1次元数値配
列,Wは数値一次子とする。
参考 ANSI X3.113では,“数値一次子”のところが数値式となっているが,誤りであるので,TIBに
よって訂正した。
例1. 構文規則(2)の例
MAT A=B MAT X=Y
MAT A=B+C MAT X=Y−Z
MAT A=B * C MAT X=A * Y
MAT X=Y * A
MAT A=W * B MAT X=W * CON
MAT A=ZER(4,3) MAT X=ZER
MAT A=INV(B) MAT A=TRN(B)
例2. 構文規則(10)の例
DET(B) DOT(X,Y)
7.2.4 意味 意味は,次による。
(1) at文と上下限の再定義
(1.1) 数値mat文 (numeric-array-assignment) を実行すると,数値配列式 (numeric-array-expression) が評価
され,その値が等号の左辺の配列に代入される。必要ならば,この配列の寸法 (size) が動的に変更
される。次元数は,変更されない。各次元の寸法が,右辺の数値配列式の値の寸法と同じになる。
(1.2) 数値配列の寸法が動的に変更されるとき,その添字の現在の上限値だけが,新しい寸法に合わせて
次のとおり変更される。
新しい下限値=もとの下限値
新しい上限値=もとの下限値+新しい寸法−1
各次元の新しい寸法は,その数値配列を宣言する配列宣言で指定した寸法を超えてもよい。しか
し,その数値配列の要素の新しい総数は,配列宣言で指定した要素の総数を超えてはならない。
(2) 配列式
(2.1) 数値配列式の評価は,通常の行列代数の規則に従う。星印“*”,正号“+”,負号“−”は,それぞ
れ乗算,加算,減算を表す。
(2.2) 数値配列式の中の数値配列の寸法は,行列代数の規則に適合していなければならない。加算又は減
算される二つの数値配列は,各次元の寸法が同じでなければならない。乗算される二つの数値配列
は,あるl,m,nに対して,次のいずれかでなければならない。
(a) ×m行列及びm×n行列である。この結果は,l×n行列となる。
(b) 要素ベクトル及びm×n行列である。この結果は,n要素ベクトルとなる。
(c) ×m行列及びm要素ベクトルである。この結果は,l要素ベクトルとなる。
(2.3) 数値配列を評価すると,数値配列の全要素が使用される。すなわち,一つの数値配列は,一つのも
のとして扱われる。
(2.4) 数値配列式の中にスカラ乗数 (scalar-multiplier) があるときには,まずスカラ乗数の数値一次子が評
価され,次にその値が数値配列の各要素に掛けられる。
(2.5) 数値配列式を評価する途中で下位けたあふれになると,その演算の結果の値は,ゼロで置き換えら
――――― [JIS X 3003 pdf 42] ―――――
39
X 3003-1993
れる。
(3) 配列値
(3.1) 数値配列値 (numeric-array-value) が,等号の左辺の数値配列に代入される。再定義上下限指定部が
ない場合には,等号の左辺の数値配列と同じ寸法の数値配列が生成される。再定義上下限指定部が
ある場合には,指定された寸法をもつ数値配列が生成され,等号の左辺の数値配列も(1)の規定に従
って再定義 (redimensioning) される。再定義上下限指定の二つの指標は,その配列値の対応する次
元の上限及び下限を表す。
再定義上下限指定に指標を一つだけ書いたときには,それは上限を表す。下限は,そこで有効な
暗黙の値になる。配列値IDNに再定義上下限指定部を書くときには,それは正方行列(以下,行数
と列数が同じ行列をいう。)を生成するものでなければならない。配列値IDNに再定義上下限指定
部を書かないときには,等号の左辺の数値配列は正方行列でなければならない。
(3.2) 配列値ZERは,すべての要素がゼロである数値配列を生成する。配列値CONは,すべての要素が
1である数値配列を生成する。配列値IDNは,単位行列すなわち主対角要素は1,それ以外の要素
はゼロの正方行列を生成する。配列値IDNに再定義上下限指定を一つだけ書くと,同じ再定義上下
限指定を二つ書いたようにみなされる。
(3.3) 配列値IDN,ZER又はCONスカラ乗数を作用させると,その数値一次子(5.3参照)が評価され,
結果の行列は,配列値IDN,ZER又はCONの各非ゼロ要素をその数値一次子の値で置き換えた値
をもつ。
(4) 配列関数
(4.1) 関数TRNは,実引き数の転置行列を生成する。m×n行列の実引き数に対して,n×m行列を返す。
(4.2) 関数INVは,実引き数の逆行列を生成する。実引き数は,正方行列でなければならない。
(4.3) 関数DETは,実引き数の行列式の値を返す。実引き数は,正方行列でなければならない。
(4.4) OT (x, y) の値は,1次元の数値ベクトルx,yの内積であるスカラ値とする。
7.2.5. 例外状態 例外状態は,次による。
(1) 数値配列式中の数値配列の寸法が,行列代数の規則に合わない。(6001,続行不能。)
(2) 再定義後の配列で必要な要素の総数が,もとの配列宣言で確保された要素数を超える。(5001,続行不
能。)
(3) 再定義上下限指定の1番目の指標の値が,2番目の指標の値より大きい。(6005,続行不能。)
(4) 再定義上下限指定に指標が一つだけ書いてあって,その値が有効な暗黙の下限の値未満である。(6005,
続行不能。)
(5) 配列値IDNに続く再定義上下限指定部が,正方行列を指定していない。又は,再定義上下限指定部が
書いてなくて,受取り側の行列が正方行列でない。(6004,続行不能。)
(6) 関数DETの実引き数が,正方数値行列でない。(6002,続行不能。)
(7) 関数INVの実引き数が,正方数値行列でない。(6003,続行不能。)
(8) 数値配列式の評価が,あふれを起こす。(1005,続行不能。)
(9) 関数DET又はDOTの評価が,あふれを起こす。(1009,続行不能。)
(10) 関数INVの実引き数が,特異行列である。又は,有効数字が,すべて失われた。(3009,続行不能。)
7.2.6 注意 処理系が,下位けたあふれを例外状態(1505,続行可能。値をゼロで置き換えて,処理を続
ける。)として報告し,例外処理区による処理を許すことを推奨する。
7.3 文字列配列
――――― [JIS X 3003 pdf 43] ―――――
40
X 3003-1993
7.3.1 概要 文字列配列 (string array) は,数値配列と同様に,指標付きの要素の集まりとみるだけでな
く,全体として一つのものとみなすこともできる。BASICは,文字列配列全体を連結 (concatenate) した
り,代入したりする機能を備える。
7.3.2 構文 構文は,次による。
(1) at文⊃文字列mat文
(2) 文字列mat文=MAT 文字列配列名 部分文字列指定? 等号 文字列配列式
(3) 文字列配列式= 文字列配列一次子{連結演算子 文字列配列一次子}?|文字列一次子 連結演算
子 文字列配列一次子|文字列配列一次子 連結演算子 文字列一次子|文字列配
列値
(4) 文字列配列一次子=文字列配列名 部分文字列指定?
(5) 文字列配列値={文字列一次子 連結演算子}? NUL ドル記号 再定義上下限指定部?
(6) 文字列mat文によって値が代入される左辺の文字列配列の次元数は,その文字列配列式の値の次元数
と同じでなければならない。
(7) 連結する二つの文字列配列は,次元数が同じでなければならない。
7.3.3 例 構文の例を次に示す。
MAT A$=A$ & B$ (2)
MAT A$=NUL$ (5,6) (2)
MAT A$=(”Number”)& B$ (2)
MAT A$(4:6)=(””)& B$ (2)
7.3.4 意味 意味は,次による。
(1) 文字列mat文 (string-array-assignment) を実行すると,文字列配列式 (string-array-expression) が評価さ
れ,その値が等号の左辺の配列に代入される。必要ならば,この配列の寸法 (size) が動的に変更され
る。次元数は,変更されない。各次元の寸法が,右辺の文字列配列式の値の寸法と同じになる。
(2) 文字列配列の寸法が動的に変更されるとき,その添字の現在の上限値だけが,新しい寸法に合わせて
次のとおり変更される。
新しい下限値=もとの下限値
新しい上限値=もとの下限値+新しい寸法−1
各次元の新しい寸法は,その文字列配列を宣言する配列宣言で指定した寸法を超えてもよい。しか
し,その文字列配列の要素の新しい総数は,配列宣言で指定した要素の総数を超えてはならない。
(3) 文字列mat文の左辺の文字列配列に部分文字列指定があるときは,各要素の値のうち部分文字列指定
で指定された部分文字列を置き換える。左辺の部分文字列指定を先に評価し,それから右辺の文字列
配列式を評価する。
(4) 文字列配列式では,連結及び部分文字列の抽出操作も行う。連結する二つの文字列配列は,各次元の
寸法が同じでなければならない。連結は,要素ごとに行われる。文字列一次子を連結するときは,こ
の文字列一次子が文字列配列のすべての要素の,(構文に従って)先頭又は末尾に連結される。文字列
配列に部分文字列指定があるときは,指定した部分文字列を配列の各要素から抽出する。
参考 ANSI X3.113では,“文字列一次子”のところがスカラとなっているが,誤りであるので,TIB
によって訂正した。
(5) 評価及び代入の順序は,次による。
(a) 左辺の配列の部分文字列指定を評価する。
――――― [JIS X 3003 pdf 44] ―――――
41
X 3003-1993
(b) 文字列配列式を左から右に順に評価する。個々の文字列一次子又は文字列配列一次子は,次のとお
り評価する。最初に添字を評価する。次に部分文字列指定を評価する。最後に文字列一次子そのも
のの値を評価する。
(c) 連結する。
(d) 代入する。
(6) 文字列配列値NUL$は,すべての要素が空文字列である配列を生成する。再定義上下限指定部がない
場合には,等号の左辺の文字列配列と同じ寸法の文字列配列が生成される。再定義上下限指定部があ
る場合には,指定された寸法をもつ文字列配列が生成され,等号の左辺の文字列配列も(2)の規定に従
って再定義される。数値配列値の再定義上下限指定部についての7.2.4の規定を,NUL$にも適用する。
(7) 部分文字列指定をもった文字列配列への代入が上下限を再定義するときの効果は,処理系定義とする。
これは,例えば,文字列mat文の左辺に部分文字列指定があり,右辺に再定義上下限指定部をもった
文字列配列値がある場合である。
参考 この(7)の項は,TIBによる。
7.3.5 例外状態 例外状態は,次による。
(1) 文字列配列式中の配列の寸法が異なる。(6101,続行不能。)
(2) 再定義上下限指定の1番目の指標の値が,2番目の指標の値より大きい。(6005,続行不能。)
(3) 再定義上下限指定に指標が一つだけ書いてあって,その値が有効な暗黙の下限の値未満である。(6005,
続行不能。)
(4) 再定義後の配列で必要な要素の総数が,もとの配列宣言で確保された要素数を超える。(5001,続行不
能。)
(5) 文字列配列式の評価が,文字列あふれを起こす。(1052,続行不能。)
(6) 左辺の文字列配列への代入が,文字列あふれを起こす。(1106,続行不能。)
7.3.6 注意 なし。
8. 制御構造
8.0 概要
制御構造 (control structure) は,プログラム中の行の実行の順序を制御する。それは,行番号
を明示的に参照する文,行番号を参照せずに明示的に構成された繰返し構造 (loop structure) 及び行番号を
参照せずに明示的に構成された判定構造 (decision structure) の両方によって行われる。
8.1 論理式
8.1.1 概要 論理式 (relational-expression) は,プログラム中の制御の流れを変更するために式の値を比較
する。
8.1.2 構文 構文は,次による。
(1) 論理式=論理和
(2) 論理和=論理積{OR 論理積}*
(3) 論理積=論理項{AND 論理項}*
(4) 論理項=NOT・ 論理一次子
(5) 論理一次子=比較式|左括弧 論理式 右括弧
(6) 比較式=数値式 比較演算子 数値式|文字列式 比較演算子 文字列式
(7) 比較演算子=等値比較|大号|小号|非大|非小
(8) 等値比較=等号|非等
――――― [JIS X 3003 pdf 45] ―――――
次のページ PDF 46
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記