この規格ページの目次
107
X 3003-1993
(6) 枠引用を,表示形式又は内部形式として開いたファイルに対して使用する。(7315,続行不能。)
(7) 枠引用を指定してないread文又はmat-read文が,固有形式として開いたファイルを参照している。
(7316,続行不能。)
(8) kip-rest指定を,流れ編成として開いたファイルに対して使用する。(7321,続行不能。)
段階2の例外状態
(9) データ入力文に対して,データ存在状態が偽であって,かつif-missing句の指定がない。(7305,続行
不能。)
段階3の例外状態
(10) ecsize句で指定した値より長い記録を参照しようとする。(8302,続行不能。)
(11) 再定義上下限指定の1番目の指標の値が,2番目の指標の値より大きい。(6005,続行不能。)
(12) 再定義上下限指定に指標が一つだけ書いてあって,その値が,そのプログラム単位で有効な暗黙の下
限の値未満である。(6005,続行不能。)
(13) 上下限の再定義後の配列で必要な要素の総数が,もとの配列宣言で確保された要素数を超える。(5001,
続行不能。)
(14) 変数又は配列要素の型が,関連する欄指定子の型(数値又は文字列)と一致しない。(8252,続行不能。)
(15) 欄数不定を指定した枠要素が配列の最初の要素に対応しない。(8253,続行不能。)
(16) 変数及び配列要素に対して十分な個数の欄指定子が枠中にない。(8254,続行不能。)
(17) ine-input文及びmat-line-input文を除くデータ入力文において,参照しようとする表示形式記録が,
構文的に正しい入力応答でない。(8105,続行不能。)
(18) 数値変数に代入しようとする表示形式記録中のデータ要素が,数値定数でない。(8101,続行不能。)
(19) 内部形式記録中の値の型が,代入しようとする変数の型(数値又は文字列)と一致しない。(8120,続
行不能。)
(20) ファイル中のデータ要素,値又は欄から変数への代入が,数値あふれを起こす。(1008,続行不能。)
(21) ファイル中のデータ要素,値又は欄から変数への代入が,文字列あふれを起こす。(1105,続行不能。)
(22) 流れ編成以外のファイルにおいて,記録中のデータ要素,値又は欄の個数がデータ入力文の作用対象
の個数よりも不足しており,かつその記録が末尾にコンマのある表示形式記録でない。(8012,続行不
能。)
(23) データ入力文の作用対象に対するデータを得ようとして,ファイルの終りに達した。(8011,続行不
能。)
(24) 記録中のデータの個数がデータ入力文の作用対象の個数より多く,かつskip-rest指定がない。(8013,
続行不能。)
(25) 表示形式記録において,入力の要求をちょうど満たすだけの個数のデータ要素の後ろにコンマが続い
ており,かつskip-rest指定がない。(8013,続行不能。)
11.4.6 注意 処理系は,下位けたあふれを例外状態(1508,続行可能。ゼロで置き換えて処理を続行する。)
としてもよい。この場合,下位けたあふれを例外処理区で処理することができる(12.1参照)。
11.5 ファイルにおけるデータ変更
11.5.1 概要 利用者は,データ変更文 (data modification statement) によって,以前にファイルに保存した
データを書換え又は削除することができる。変更は,常に記録単位に行われる。
11.5.2 構文 構文は,次による。ここで,(1)(9)は拡充ファイルの生成規則,(10)(12)は拡充ファイル
機能単位に適用する構文,“個”は固有形式拡充ファイルの生成規則とする。
――――― [JIS X 3003 pdf 111] ―――――
108
X 3003-1993
中核の生成規則 なし
拡充ファイルの生成規則
(1) 単純実行文⊃rewrite文|mat-rewrite文|delete文
(2) ewrite文=REWRITE 経路式 書換え制御 コロン 式並び
(3) at-rewrite文=MAT REWRITE 経路式 書換え制御 コロン 配列名並び
(4) 書換え制御={コンマ 書換え制御項目}*
(5) 書換え制御項目⊃if-missing句|記録設定
(6) elete文=DELETE 経路式 削除制御
(7) 削除制御={コンマ 削除制御項目}*
(8) 削除制御項目=if-missing句|記録設定
固(9) 書換え制御項目⊃枠引用
(10) 枠引用の行番号は,同じプログラム単位中のtemplate文を参照するものでなければならない。
(11) 一つの書換え制御項目は,一つの書換え制御中では,ただ1回だけ書くことができる。
(12) 一つの削除制御項目は,一つの削除制御中では,ただ1回だけ書くことができる。
11.5.3 例 構文の例を次に示す。
REWRITE #N, KEY=B$, IF MISSING THEN 666:A,B,C$ (2)
MAT REWRITE #3, RECORD N-1, WITH 111:X,Y,Z (3)
DELETE #3, KEY ”JONES” (6)
11.5.4 意味 意味は,次による。ここで,(1)は,すべてのデータ変更文に対する一般的な規則を定める。
データ変更文は,多くの点でデータ入力文とデータ生成文の様式に密接に合わせてある。データ変更文は,
データ入力文と同様に既存の記録を操作し,データ生成文と同様にファイルの状態を変えることができる。
(1) データ変更処理
(1.1) データ変更文は,相対編成 (relative) ファイル及び索引編成 (keyed) ファイルに対してだけ指定で
きる。それ以外のファイル編成のファイルに対する効果は,処理系定義とする。
(1.2) データ変更文においては,入出力方向属性が入出力両用でなければならない。入出力方向属性以外
の点では,データ変更文の段階1及び段階2の処理(すなわち,ファイル属性の検査及びファイル
指示子の設定)は,既存の記録を操作するものであるから,データ入力文(11.4.4参照)と全く同
じとする。段階3の処理は,操作がファイル属性に適合し,ファイル指示子が正しく位置付けられ,
データ存在状態 (data-found) が真になったときだけ実行される。(2)(4)は,段階3の処理を,個々
の文の形式ごとに定める。
(2) ewrite文
(2.1) ewrite文 (rewrite-statement) は,ちょうど一つの記録を生成する。この記録は,同じ式並び又は配
列名並び(及びもしあれば同じ枠引用)をもつwrite文によって生成される記録と同じとする(11.3.4
参照)。ただし,固有形式記録においては,skip指定によって制御される欄は,ゼロ又は空白が埋め
られるのではなく,もとの欄の内容が変更されずに残る。skip指定がこの効果をもつのは,rewrite
文の使用する枠が,その記録を生成するのに最後に使用された枠に適合している (compatible) とき
だけとする[適合の定義は11.4.4(12)参照]。skip指定を含む適合しない枠を使用した結果は,処理
系定義とする。skip指定を含まない適合しない枠を使用すると,11.3.4(12)に従って記録全体が置き
換えられる。
(2.2) データ生成時に例外状態にならなければ,ファイル指示子の指している記録が,いま生成された記
――――― [JIS X 3003 pdf 112] ―――――
109
X 3003-1993
録によって置き換えられる。ファイル指示子は,次のファイル要素を指すように進められる。この
結果,相対編成ファイルの記録番号又は索引編成ファイルのキーは,変更されない。例外状態にな
ると,ファイル指示子は段階2の処理(11.3.4及び11.4.4参照)で設定された位置にとどまり,フ
ァイルのデータは変更されない。
(3) at-rewrite文 mat-rewrite文 (array-rewrite-statement) の効果は,その配列の配列要素を明示的に指
定したrewrite文と同じとする。配列と枠中の欄指定子との対応の規則は,mat-write文の場合と全く
同じとする[11.3.4(13)参照]。
(4) elete文 delete文 (delete-statement) は,ファイル指示子で指されている記録を削除する。ファイル
指示子は,次のファイル要素を指すように進められる。この結果,相対編成ファイルでは操作された
記録領域が記録を含まなくなり,索引編成ファイルでは操作された記録が,ファイルを構成する記録
の列から除去される。
(5) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(5)項がないが,TIBによって補った。
11.5.5 例外状態 データ変更文に関する例外状態は,それが検出される処理段階に従って分類する。段階
1の例外状態では,ファイル及びファイル指示子は変更されない。段階2の例外状態では,ファイルは変
更されない。段階3の例外状態でも,ファイルは変更されない。
段階1の例外状態
(1) データ変更文が不活性状態にある経路を参照している。(7004,続行不能。)
(2) データ変更文がゼロ番の経路を参照している。(7320,続行不能。)
(3) 記録設定を正しく処理できない。(11.2.5に規定する例外状態7002及び72027207による。)
(4) データ変更文が,入力専用又は出力専用として開いたファイルを参照している。(7322,続行不能。)
(5) 枠引用の文字列式が,構文的に正しい枠要素並びでない。(8251,続行不能。)
(6) 枠引用を,表示形式又は内部形式として開いたファイルに対して使用する。(7315,続行不能。)
(7) 枠引用を指定してないrewrite文又はmat-rewrite文が,固有形式として開いたファイルを参照してい
る。(7316,続行不能。)
段階2の例外状態
(8) データ変更文に対して,データ存在状態が偽であって,かつif-missing句の指定がない。(7305,続行
不能。)
段階3の例外状態
(9) ecsize句で指定した値より長い記録を書き換えようとする。(8301,続行不能。)
(10) 式又は配列要素の型が,関連する欄指定子の型(数値又は文字列)と一致しない。(8252,続行不能。)
(11) 欄数不定を指定した枠要素が配列の最初の要素に対応しない。(8253,続行不能。)
(12) 式及び配列要素に対して十分な個数の欄指定子が枠中にない。(8254,続行不能。)
(13) 数値が,枠中の欄で使用可能なけた位置の左端を越えて有効数字をもつ。(8255,続行不能。)
(14) 文字列値が,枠中の欄の幅より長い。(8256,続行不能。)
11.5.6 注意 delete文及びrewrite操作は,ファイル指示子がNEXTによって位置付けられる場合及び記
録設定を省略したので前回の操作時のままの位置を指している場合にも,指示子の指している記録に作用
する。
――――― [JIS X 3003 pdf 113] ―――――
110
X 3003-1993
12. 例外状態処理及びデバッグ
12.1 例外状態処理
12.1.1 概要 例外状態処理 (exception handling) 機能によって,例外状態 (exception) の起こった後にプロ
グラムの制御を取り戻すことができる。
12.1.2 構文 構文は,次による。
(1) 保護区=when-in区|when-use区
(2) hen-in区=when-in行 when本体 use行 例外処理区 end-when行
(3) hen-in行=行番号 WHEN EXCEPTION IN 行末部
(4) hen本体=区*
(5) se行=行番号 USE 行末部
(6) 例外処理区=区*
(7) nd-when行=行番号 END WHEN 行末部
(8) hen-use区=when-use行 when本体 end-when行
(9) hen-use行=行番号 WHEN EXCEPTION USE 例外処理区名 行末部
(10) 例外処理区名=ルーチン識別名
(11) 例外処理区戻り文=RETRY|CONTINUE
(12) xit-handler文=EXIT HANDLER
(13) ause-exception文=CAUSE EXCEPTION 例外状態種別
(14) 例外状態種別=指標
(15) andler区=handler行 例外処理区 end-handler行
(16) andler行=行番号 HANDLER 例外処理区名 行末部
(17) nd-handler行=行番号 END HANDLER 行末部
(18) 数値組込み関数名⊃EXLINE|EXTYPE
(19) 文字列組込み関数名⊃EXTEXT ドル記号
(20) 例外処理区戻り文及びexit-handler文は,例外処理区の中にだけ書くことができる。引き数のない数
値組込み関数EXLINE及びEXTYPEは,例外処理区の中からだけ呼ぶことができる。関数EXTEXT$の
実引き数は,一つの数値式とする。これは,指標として評価される。
(21) ある保護区の外部の行番号分岐中の行番号が,その保護区の内部にある行を参照してはならない。そ
のwhen-in行及びwhen-use行は,参照してもよい。例外処理区の内部の行番号分岐中の行番号が,そ
の例外処理区の外部にある行を参照してはならない。それ自身のend-handler行及びend-when行は,
参照してもよい。ある例外処理区の外部の行番号分岐中の行番号が,その例外処理区の内部にある行,
end-handler行及びend-when行を参照してはならない。
(22) ある内部手続き定義の内部のwhen-use行が参照するhandler区は,同じプログラム単位の内部で定義
しなければならない。
参考 ANSI X3.113の文章はやや異なるが,TIBによって訂正した。
一つのプログラム単位の中の二つのhandler行に,同じ例外処理区名を書いてはならない。保護区
の内部にhandler区を書いてはならない[(4),(6)参照]。
(23) 例外処理区の内部に保護区を書いてはならない。
12.1.3 例 構文の例を次に示す。
(1) 入力応答の誤りに対し,適切な通知を発行して,入力応答の再供給を可能にする[構文(2)]。
――――― [JIS X 3003 pdf 114] ―――――
111
X 3003-1993
100 WHEIN EXCEPTION IN
110 PRINT ”Enter your age and weight”
120 INPUT a, w
130 IF a>10 THEN
140 PRINT ”What is your height”
150 INPUT h
160 END IF
170 USE
180 PRINT ”Please enter numbers only”
190 RETRY
200 END WHEN
(2) 動的にファイルを開く[構文(15),(8)など]
100 HANDLER filetrouble
110 LET fileok$z =”false”6
120 IF EXTYPE=7107 THEN
130 LET message$=”doesn't exist”
140 ELSEIF EXTYPE=7102 THEN
150 LET message$=”is thewrong type"
160 ELSE
170 LET message$=”couldn't be used"
180 END IF
190 PRINT”file”;filename$;message$;”try again"
200 END HANDLER
500 DO
510 INPUT filename$
520 LET file ok$=”true”
530 WHEN EXCEPTION USE filetrouble
540 OPEN #n:NAME filename$ ! other parameters omitted
550 END WHEN
560 LOOP UNTIL fileok$=”true”
(3) 例外処理区の入れ子[構文(2)]。
100 WHEN EXCEPTION IN
110 DO
120 READ#1, IF MISSING THEN EXIT DO:A
130 LET I = I+1 ! I initialized outside loop
140 WHEN EXCEPTION IN
150 LET B(I)=1000*A*A
160 USE
170 ! Assume it is numeric overflow
180 LET B(I)=MAXNUM
――――― [JIS X 3003 pdf 115] ―――――
次のページ PDF 116
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記