この規格ページの目次
92
X 3003-1993
のままで変更されない。装置は,記録設定の能力をもつとは限らない。ある装置が記録設定の能力
をもつか否かは,ask文によって知ることができる。
(2) 記録設定
(2.1) 記録設定を書かないと,ファイル指示子は,以前の状態のままで変更されない。その場合でも,デ
ータ存否[(3)参照]があれば,それはそのまま有効とする。
(2.2) 記録設定NEXTは,指示子を,現在の位置又はそれ以後にある,次の存在する記録(流れ編成以外
のとき)又は値(流れ編成のとき)に位置付ける。したがって,相対編成ファイルでは,指示子は,
NEXTによって次の存在する記録までにある空の記録領域をすべて飛び越す。指示子がファイルの
終り以後又は存在する記録に既に位置付けられていれば,指示子は,NEXTによって変更されない。
この機能によって,相対編成ファイルを順編成ファイルであるかのようにみなして処理することが
できる。
流れ編成ファイル及び索引編成ファイルでは,指示子は,存在するファイル要素又はファイルの
終りに常に位置付けられているので,変更されない。
順編成ファイルでは,NEXTが何らかの効果をもつのは,部分記録が保留されている場合だけと
する(11.3参照)。この場合には,記録末 (end-of-record) が作られ,指示子はファイルの終りに位
置付けられたままとする。
(2.3) 記録設定BEGINは,指示子をファイルの始め,すなわち,先頭のファイル要素に位置付ける。フ
ァイルが空であるときには,この位置はファイルの終りでもある。
(2.4) 記録設定ENDは,指示子をファイルの終りに位置付ける。ファイルの終りは,順編成ファイル,
流れ編成ファイル及び索引編成ファイルの場合には,(もしあれば)末尾のファイル要素の直後の位
置とし,相対編成ファイルの場合には,存在する最後の記録の直後の位置(記録が全く存在しなけ
れば,記録番号1の記録領域)とする。
(2.5) 記録設定SAMEによって,その経路に割り当てられたファイルを開いて以来,いちばん最近に処理
したのと同じファイル要素(複数個のこともある。)を参照することができる。その経路を通してい
ちばん最近に実行した記録操作が,次の二つの条件を満たす場合だけ,SAMEの実行は正しい。
(a) その記録操作がdelete文でない。
(b) その記録操作の実行中,少なくともファイル指示子の位置付けが完了するまでは,どのような例外
状態にもならなかった。
これらの条件を満たしていない場合,指示子操作は行われず,例外状態になる。
これらの条件を満たしている場合,その最近の記録操作がread操作,input操作,指示子制御を
指定したset文又はrewrite操作であれば,SAMEは,指示子をその操作の記録設定が位置付けたの
と同じファイル要素に再び位置付ける。その操作に記録設定の指定がなかったときは,SAMEは,
指示子をその操作の開始時にあったのと同じ位置に再び位置付ける。最近の記録操作がwrite操作
又はprint操作であれば,SAMEは,指示子をその操作によって生成された最初のファイル要素に
位置付ける。
(2.6) 記録設定RECORDは,相対編成ファイルに対して使用する場合にだけ正しい。相対編成ファイル
として開いたのでないファイルに対してこの記録設定を使用すると,指示子は変更されず,例外状
態になる。
指標は整数値に丸めて評価され,指示子は対応する記録領域に,記録のあるなしにかかわらず位
置付けられる。指標を評価した結果がゼロ以下である場合には,指示子は変更されず,例外状態に
――――― [JIS X 3003 pdf 96] ―――――
93
X 3003-1993
なる。
(2.7) 記録設定KEYは,索引編成ファイルに対して使用する場合にだけ正しい。索引編成ファイルとし
て開いたのでないファイルに対してこの記録設定を使用すると,指示子は変更されず,例外状態に
なる。
等値探索 (exact-search) では,指示子は文字列式の値に等しいキーをもつ記録に位置付けられる。
該当する記録がなければ,指示子は,文字列式の値より大きいキーをもつ最初の記録に位置付けら
れる。そのような記録もなければ,指示子はファイルの終りに位置付けられる。
非小を指定した大号探索 (inexact-search) では,データ存在状態[(3)参照]の設定を除けば,等
値探索と全く同じに指示子が位置付けられる。大号を指定した大号探索では,指示子は文字列式の
値より大きいキーをもつ最初の記録に位置付けられる。該当する記録がなければ,指示子はファイ
ルの終りに位置付けられる。
(3) データ存否
(3.1) 指示子操作が完了すると,データ存在 (data-found) と呼ばれる状態が設定される。この状態は,真
又は偽の値をもつ。データ存在状態が真でかりif-there句が指定されている場合,及びデータ存在
状態が偽でかつif-missing句が指定されている場合には,データ存否動作 (io-recovery-action) が実
行される。この二つの場合以外は,データ存否動作は無視される。
(3.2) 次のいずれかの場合に,データ存在状態は偽となる。これら以外の場合には,データ存在状態は真
となる。
(a) 等値探索が指定されたが,文字列式の値に等しいキーをもつ記録が存在しない。
(b) 位置付け後,その指示子がファイルの終りを指している。
(c) 位置付け後,その指示子が空の記録領域を指している。
(d) 装置の場合に,入力に使用できるデータが存在しないことを意味する処理系定義の条件が発生して
いる。
(3.3) データ存否動作がexit-do文又はexit-for文であれば,その文は通常と同じ効果をもつ(8.3参照)。
データ存否動作が行番号であれば,指定した行から実行を続ける。
11.2.5 例外状態 例外状態は,次による。
(1) 不活性状態にある経路に対して指示子制御を指定したset文を実行する。(7004,続行不能。)
(2) ゼロ番の経路に対して記録設定を使用する。(7002,続行可能。何もしないで処理を続ける。)
(3) 記録設定の能力をもたない装置に対して,記録設定を使用する。(7205,続行可能。何もしないで処理
を続ける。)
(4) 指定した経路に対していちばん最近に実行した記録操作がdelete文であるにもかかわらず,記録設定
SAMEを使用する。(7204,続行不能。)
(5) 指定した経路に対していちばん最近に実行した記録操作が,指示子操作がなされる前に例外状態を引
き起こしたにもかかわらず,記録設定SAMEを使用する。(7204,続行不能。)
(6) 指定した経路に対して,開いて以来全く記録操作を実行していないにもかかわらず,記録設定SAME
を使用する。(7204,続行不能。)
(7) 相対編成以外のファイル編成属性で開いたファイルに,記録設定RECORDを使用する。(7202,続行
不能。)
(8) 索引編成以外のファイル編成属性で開いたファイルに,記録設定KEYを使用する。(7203,続行不能。)
(9) 記録設定RECORDの指標の値がゼロ以下である。(7206,続行不能。)
――――― [JIS X 3003 pdf 97] ―――――
94
X 3003-1993
(10) 記録設定KEYにおいて,空文字列による等値探索を指定している。(7207,続行不能。)
11.2.6 注意 注意は,次による。
(1) 装置の場合,例えば次のような条件によって,データ存在状態が偽となることがある。
(a) カード読取り装置に読み込むカードが尽きた。
(b) 端末から位置1/10の制御文字 (control-Z) が送られた。(これは,ある種のシステムではファイルの
終りを意味する。)
(c) 装置が,行印字装置のような出力専用装置である。
(2) 相対編成ファイルに対する記録設定の効果を,図11.1に例示する。
図11.1 相対編成ファイルに対する記録設定の効果の例示
相対編成ファイル中に,記録番号2,5,6の三つの記録だけが存在するとする。記録設定RECORD 2を
指定したread文を実行した直後の各記録設定は,ファイル指示子を次のように位置付ける。
11.3 ファイルへのデータ生成
11.3.1 概要 利用者は,プログラムによって作成されたデータを外部に出力することができる。狭義ファ
イル (true file) の場合,後のプログラムによってそのデータを入力したり変更したりすることができる。
この機能は,10.の出力機能をファイル向きに拡充したものとする。更に,さまざまな記録形式 (record-type)
向きの出力を行う新しい機能も定める。set文のmargin句及びzonewidth句は,データ生成文 (data creation
statement) には含まれないが,表示形式記録と関連するので,ここで規定する。
11.3.2 構文 構文は,次による。ここで,(1)(11)は中核の生成規則,(12)(27)は拡充ファイルの生成
規則,(28)(35)は両方の機能単位に適用する構文,“固”は固有形式拡充ファイルの生成規則とする。
中核の生成規則
(1) rint文⊃PRINT 経路式 印字制御{コロン{印字項目並び|書式印字式並び}}?
(2) at-print文⊃MAT PRINT 経路式 印字制御 コロン{印字配列名並び|書式印字配列名並び}
(3) 印字制御={コンマ 印字制御項目}*
(4) 印字制御項目=中核記録設定|if-there句|USING 書式引用
(5) 設定対象⊃経路指定 [{MARGIN|ZONEWIDTH}] 指標
(6) rite文=WRITE 経路式 書出し制御 コロン 式並び
(7) at-write文=MAT WRITE 経路式 書出し制御 コロン 配列名並び
(8) 書出し制御={コンマ 書出し制御項目}*
(9) 書出し制御項目⊃記録設定|if-there句
(10) 式並び=式{コンマ 式}*
(11) 配列名並び=配列名{コンマ 配列名}*
拡充ファイルの生成規則
固(12) 書出し制御項目⊃枠引用
――――― [JIS X 3003 pdf 98] ―――――
95
X 3003-1993
固(13) 枠引用=WITH{行番号|文字列式}
固(14) 宣言文⊃template文
固(15) emplate文=TEMPLATE コロン 枠要素並び
固(16) 枠要素並び=枠要素{コンマ 枠要素}*
固(17) 枠要素=欄数固定{欄指定子|左括弧 枠要素並び 右括弧}|欄数不定 欄指定子
固(18) 欄数固定=SKIP・{符号なし整数 OF}?
固(19) 欄数不定=疑問符 OF
固(20) 欄指定子=数値欄指定子|文字列欄指定子
固(21) 数値欄指定子=NUMERIC 星印 数値欄幅
固(22) 数値欄幅=小数点指定|E
固(23) 小数点指定=整数幅 小数点?|整数幅? 小数点 小数幅
固(24) 整数幅=符号なし整数
固(25) 小数幅=符号なし整数
固(26) 文字列欄指定子=STRING 星印 文字列欄幅
固(27) 文字列欄幅=符号なし整数
(28) rint文又はmat-print文において,書式引用と印字項目並び又は印字配列名並びとを併用することは
できない。すなわち,印字制御として書式引用を書いたときにこれらの文に使用できるのは,書式印
字式並び又は書式印字配列名並びだけとする。
(29) 枠引用の行番号は,同じプログラム単位中のtemplate文を参照するものでなければならない。
(30) 欄数固定における符号なし整数の値は,1以上とする。
(31) 小数点指定において,整数幅又は小数幅の少なくとも一方は,1以上とする。
(32) 文字列欄幅は,1以上とする。
(33) 書出し制御中の記録設定には,大号探索を指定してはならない。
(34) 一つの印字制御項目は,一つの印字制御中では,たかだか1回だけ書くことができる。
(35) 一つの書出し制御項目は,一つの書出し制御中では,たかだか1回だけ書くことができる。
11.3.3 例 構文の例を次に示す。
PRINT #3 : A, B, C (1)
PRINT #3, END, USING 123:A$, B+C; (1)
MAT PRINT #N, SAME, IF THERE THEN EXIT FOR:A$;B$, C (2)
#3:MARGIN N+1 (5)
WRITE #3, RECORD 47, IF THERE THEN 666:A+B, C$ & D$ (6)
WRITE #X+Y, WITH TEMPLATE3$:X, Y, Z+W (6)
MAT WRITE #3, KEY ”Whoever”, IF THERE THEN 666, WITH 111:A, B$ (7)
TEMPLATE:STRING*5, 2 OF NUMERIC*3.4 (15)
TEMPLATE:・OF NUMERIC*5.2,・ OF STRING*5 (15)
5 OF STRING*22, 3 OF NUMERTC*E,・ OF NUMERIC*.6 (16)
11.3.4 意味 意味は,次による。ここで,(1)は,すべてのデータ生成文に対する一般的な規則を定める。
すべての場合において,データ生成文は,ファイルに対して一つ以上の新しいファイル要素 (file element)
を追加するが,既存のファイル要素には影響を与えない。(2)(13)は,個々の文の構文形式に特有の規則
を文の形式ごとに定める。
――――― [JIS X 3003 pdf 99] ―――――
96
X 3003-1993
(1) データ生成処理
(1.1) 最初に,経路式によって,データを出力する経路 (channel) が定められ,意図した操作にファイル
属性が適合するか否かが調べられる。データ生成文においては,入出力方向属性が出力専用又は入
出力両用でなければならない。経路が活性状態にあり,ファイル属性がデータ生成文に適合するな
らば,次の段階に進む。そうでなければ,ファイル,ファイル指示子及びすべてのプログラム変数
は変更されず,例外状態になる。
(1.2) 段階2の処理では,記録設定 (record-setter) に基づいて(記録設定がない場合にも),11.2.4(2)の規
定どおりにファイル指示子 (file pointer) の位置付けが行われ,11.2.4(3)の規定どおりにデータ存在
状態 (data-found) が設定される。データ存在状態が真である場合,if-there句を指定してあるときは
データ存否動作が実行され,指定してないときは例外状態になる。いずれのときにも,指示子の位
置及びファイルは変更されたままとする。
(1.3) データ存在状態が偽である場合には,段階3に進み,指示子によって指された位置にデータが出力
される。並びの作用対象が左から右に順番に評価され,データがちょうどファイル要素を満たすま
でになると,ファイル要素がファイルに追加され,指示子は生成されたファイル要素の直後の位置
を指す。特に,データ転送の途中で例外状態になったときに,ファイル要素の一部分だけがファイ
ルに追加されることはない。しかし,一つの文が複数個のファイル要素を生成しているときには,
例外状態になるまでに生成されたファイル要素は,ファイル中に残る。
データ転送が終わった時に,ファイル指示子は,最後に生成されたファイル要素の次のファイル
要素(次のファイル要素がないときはファイルの終り)を指している。例外状態になり,ファイル
要素が生成されなかった場合には,指示子は,段階2で設定された位置にとどまる。
(2) rint文
(2.1) rint文によるデータ転送は,10.3及び10.4による。ただし,生成される一連の文字の列が現在行
ではなく表示形式ファイルの1記録を構成し,そこで行末ではなく記録末が生成される。文字の列
をもたない記録を生成することもできる。
記録末は,ファイル中の一つのファイル要素の生成が完了したことを示す手段とし,処理系定義
とする。すなわち,記録末が生成されると,データ生成文を用いて,この記録を変更したりこの記
録にデータを追加したりすることはできなくなる。(2.2)に定める特別な場合を除いて,有効な記録
末が生成されるまでファイルにデータが実際に追加されることはない。すなわち,その場合を除い
て,部分記録がファイルに追加されることはない。
記録末の生成位置を制御する実効行幅は,そのファイルを開く時にrecsize句の値として与えるか,
又は開いた後でこの経路に対してmargin句のあるset文を実行して与える[(4)参照]。
(2.2) ここに定める特別な場合に限って,部分記録 (partial record) がファイルに追加される。すなわち、
印字項目並び又は書式印字式並びの末尾に印字区切りがある場合,部分記録がファイルの終りに生
成され,指示子が部分記録の直後のファイルの終りを指して,文の実行が完了する。文の実行が完
了する前に例外状態になると,(1.3)と同様に,部分記録はファイルに追加されない。
この経路に対する次の操作が記録設定なしのprint文である場合にだけ,そこで生成される一連
の文字の列が,行幅に関する通常の規則に従ってこの部分記録の後ろに追加される。その経路に対
する次の操作がそのようなprint文でない場合には,他のあらゆる処理に先立って,部分記録は後
ろに記録末を付けられて完成し,指示子はファイルの終りを指す。
(3) at-print文
――――― [JIS X 3003 pdf 100] ―――――
次のページ PDF 101
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記