+----------------------------------IBM 拡張----------------------------------+
次のいずれかの場合には、ACCEPT ステートメントは拡張 ACCEPT ステートメントであると見なされます。
次の場合には、ACCEPT ステートメントは標準 ACCEPT ステートメントであると見なされます。
ACCEPT ステートメント - 形式 7 - ワークステーション I/O .-----------------------. V | >>-ACCEPT--ID-1----+-------------------+-+----------------------> +-| 行と列の句 |----+ +-FROM CRT----------+ +-MODE-+----+-BLOCK-+ | '-IS-' | '-| WITH 句 |-------' >--+------------------------------------------+-----------------> '-+----+--EXCEPTION--命令ステートメント -1-' '-ON-' >--+-----------------------------------------------+------------> '-NOT--+----+--EXCEPTION--命令ステートメント -2-' '-ON-' >--+------------+---------------------------------------------->< '-END-ACCEPT-' 行と列の句: .-----------------------------------. V | |--+-+----+---+-LINE---+-+--------+-+-ID-2----+-+-+-------------| | '-AT-' +-COLUMN-+ '-NUMBER-' '-整数 -1-' | | '-COL----' | '-AT-+-ID-3---+--------------------------------' '-整数-2-' WITH 句: .-------------------------------------------------. V | |--WITH----+-+-AUTO------+-------------------------------+-+----| | '-AUTO-SKIP-' | +-+-BELL-+------------------------------------+ | '-BEEP-' | +-BLINK---------------------------------------+ +-+-FULL---------+----------------------------+ | '-LENGTH-CHECK-' | +-HIGHLIGHT-----------------------------------+ +-+-REQUIRED----+-----------------------------+ | '-EMPTY-CHECK-' | +-REVERSE-VIDEO-------------------------------+ +-+-SECURE--+---------------------------------+ | '-NO-ECHO-' | +-UNDERLINE-----------------------------------+ +-RIGHT-JUSTIFY-------------------------------+ +-SPACE-FILL----------------------------------+ +-TRAILING-SIGN-------------------------------+ +-UPDATE--------------------------------------+ +-ZERO-FILL-----------------------------------+ +-SIZE-+----+-+-ID-4---+----------------------+ | '-IS-' '-整数-3-' | | (1) | +-PROMPT------+--------------+-+-ID-5-------+-+ | '-CHARACTER IS-' '-リテラル-1-' | | (1) | +-+-FOREGROUND-COLOR------+-+----+-整数-4-----+ | '-FOREGROUND-COLOUR-----' '-IS-' | | (1) | +-+-BACKGROUND-COLOR------+-+----+-整数-5-----+ | '-BACKGROUND-COLOUR-----' '-IS-' | | (1) | '-LEFT-JUSTIFY--------------------------------'
注:
ID-1 は、内部浮動小数点データ項目でも外部浮動小数点データ項目でも可能です。
受け入れられた、または表示されたフィールドは、その前後に属性バイトが必要です。 これを実現するには、少なくとも初期表示属性を表示するためのスペースが画面上で使用可能になっていなければなりません。 したがって、第 1 行、第 1 列は最初の表示属性用に使用されるため、その場所をデータ用に使用することはできません。 データ用に使用可能な最初の位置は、第 1 行、第 2 列となります。
たとえば、次のとおりです。
AT 句は、受け入れられる、または表示されることになるフィールドの開始行および列を設定します。 これは、初期表示属性の位置を示すものではありません。
属性バイトがデータ・バイトと重なり合ったり、データ・バイトが属性バイトと重なり合ったりしないように、各フィールドが画面上に配置されていることを確認する必要があります。 さらに、属性バイトの終わりは、特定ワークステーションについて定義した通常の属性になることにも留意してください。 したがって、期待どおりの結果を得るには属性が正しい順序で指定されていることを確認する必要があります。
最初に画面をクリアするときは、WITH BLANK SCREEN 句を含んだ DISPLAY ステートメントを使用してください。
ID-1 が画面に合わないときは、英数字データが切り捨てられたり、数字データが画面上に表示されなくなります。
ID-1 がグループ項目で、MODE IS BLOCK 句がなければ、FILLER 以外の名前を持つ基本従属項目が表示されます。 基本項目は、その記述が DATA DIVISION に現れる順番で画面に同時に表示されて位置付けされ、グループ中の FILLER 項目の長さによって分離されます。 このため、行上の最初の位置は、直前の行の最後の位置にすぐに続くものと見なされます。
項目が FILLER によって分離されている場合、属性バイトは FILLER の長さに含まれます。 このようにして、1 または 2 バイトの FILLER に、分離項目の後ろに続く属性および先の属性の両方が含まれていることになります。 1 バイト FILLER の場合には、後ろに続く属性および先の属性が同じバイトを占有します。 データ項目は、通常 1 つの属性バイトで分離されているので、1 バイトの FILLER 項目は必要ありません。
REDEFINES、POINTER、PROCEDURE-POINTER、および INDEX-NAME データが MODE IS BLOCK 句のないグループ項目にあるとき、それらのデータは無視されます。
拡張 ACCEPT ステートメントは、実行キーが押された後にワークステーションから変更済みの値だけを受け入れることにより、ID-1 の値を事前表示します。 実行キーを押すだけでは、事前表示されたデータ項目は更新されません。
ACCEPT された値は、データ項目に対して指定された画面位置から取られた文字のイメージで、フィールド終了キーが押された時点でのカーソル位置によって区切られます。
FIELD EXIT キーを使用して、英字フィールドおよび英数字フィールド内のすべての後書きスペースを 16 進のゼロに変換します。 これはデフォルトのコンパイラー・オプション *UNDSPCHR が有効な場合に使用できます。 たとえば、次のとおりです。
DATA DIVISION. 01 STRUC1. 03 F11 PIC AA VALUE 'A'. 03 F12 PIC 9(4) VALUE 123. 03 F13 PIC XXX VALUE 'B'. PROCEDURE DIVISION. ACCEPT STRUC1 AT 2102.
この例にある ACCEPT ステートメントは、以下の 3 つのフィールドを事前表示します。
ここで、第 21 行には次のような結果が現れます。
数字フィールド F12 は右そろえで、その先頭にスペースが入ることに注意してください。
フィールド F13 の最後にカーソルを置き、上記の 3 つのフィールドの値に応じてフィールド終了キーを押すと、それらフィールドの値は変更されずに残ります。 ただし、F11 および F13 の後書きスペース (X'40') は確実に 16 進数のゼロになるので、テスト IF F13='B ' は ACCEPT 操作の後で失敗します。
16 進数のゼロを後書きしないようにするには、SPACE-FILL 句を使用します。 既存プログラムにこの句をもたない拡張 ACCEPT ステートメントがすでに含まれており、 プログラム変更が高価であったり望ましい解決方法でない場合には、*NOUNDSPCHR コンパイラー・オプションの使用を考慮できます。 このオプションは、拡張 ACCEPT および拡張 DISPLAY ステートメントが表示可能文字だけを処理するプログラムだけに使用してください。
表示だけ可能な文字は、次の場合に処理されます。
たとえば、次のとおりです。
01 STRUC2. 03 F21 PIC 99. 03 F22 PIC 9(10) USAGE COMP-3 VALUE 1111123. 03 F23 PIC X(5).
ACCEPT STRUC2 MODE IS BLOCK AT 0102 は、長さが 13 バイトの英数字フィールドの 1 つとして処理されるために、表示不能文字が含まれることになります。
リモート制御装置と 5250 エミュレーションを使用して、プログラムがワークステーションで実行される場合、ILE COBOL 実行時モジュールは、 コンパイラー・オプション *UNDSPCHR を (それが有効な場合) *NOUNDSDPCHR に変更して、通知メッセージをユーザーに送信します。 システム構成にさまざまなワークステーション制御機構が含まれているときには、 一貫性のある結果が得られるように、*NOUNSDPCHR オプションを使用することをお勧めします。 このオプションを有効にするには、COBOL ソース・プログラム内の PROCESS ステートメントに NOUNDSPCHR を指定します。
ACCEPT ステートメントで浮動小数点データ項目を使用する場合には、以下について考慮する必要があります。
外部浮動小数点リテラルが ACCEPT される場合は、結果が少し不正確になる可能性があります。 このことは、浮動小数点データ項目が ACCEPT された後で転送された場合に、特にそうであると言えます。 浮動小数点データ・タイプは近似値で、外部浮動小数点リテラルが転送された場合に、 この浮動小数点データ・タイプはまず真の浮動小数点値 (IEEE) に変換されますが、 この変換も浮動小数点データ・タイプの正確性に影響を与える可能性があります。
たとえば、以下の ACCEPT を考えてみます。
77 external-float-1 PIC +9(3).9(13)E+9(3). ACCEPT external-float-1 FROM CRT. DISPLAY "EXTERNAL-FLOAT-1=" external-float-1.
+123455779012.3453E+297 が ACCEPT された後の表示結果は以下のとおりです。
EXTERNAL-FLOAT-1=+123.4557790123452E+306
次の表は、拡張 ACCEPT
ステートメントで処理されるデータのカテゴリーを示したものです。
ここに示したデータ・カテゴリーは拡張 DISPLAY
ステートメントでもサポートされます。 (拡張 ACCEPT および DISPLAY
ステートメントは PICTURE
文節にスケーリング位置をともなうデータ項目をサポートしていません。)
表 29. 拡張 ACCEPT ステートメントで処理されるデータのカテゴリー
カテゴリー | 初期表示 | 入力するデータ | 更新される データ項目 |
---|---|---|---|
英字 | A、B、C | D | B、C |
数字 (内部、2 進、10 進、またはパック 10 進) | B、C、E、F、F1、 F2 | D、G、H | O |
数字 (ゾーン 10 進) | B、C、F、F1、F2 | D、G、H | O |
数字編集 | A、I | J、H | K、O |
英数字 | A、B、C | D | B、C |
英数字編集項目 | A、I | J | L |
ブール | A、B、C | D、M、N | B、C |
DBCS | A、B、C | D | B、C |
DBCS 編集 | A、B、C | D | B、C、L |
内部浮動小数点 | A、I、I1、P | Q | O |
外部浮動小数点 | A、I、I1 | Q | O |
SPACE-FILL だけが指定されている場合、後書き 16 進ゼロはスペースに変換されます。
ZERO-FILL (または SPACE-FILL) だけしか指定しない場合には、ワークステーションは何の変換も行いません。
符号は先行位置または後書き位置に入力しなければなりません。 小数点は小数部分の前に入力しなければなりません。 桁の位置そろえは行われません。コンマは整数部分を 3 桁ごとに区切ります。
10 進数値は整数と小数の 2 つの部分に分けられます。 小数点の左側の数字は整数値として解釈されます。 右側の数字は小数値として解釈されます。 小数点が含まれていない場合、その数字は整数値として解釈されます。 小数点記号が左端の数字桁よりも前にある場合、その数字は小数値として解釈されますが、 その場合、左端の数字桁は小数点記号と隣り合っていなければなりません。 小数点が右端の数字桁のうしろにある場合は、その数字は整数として解釈されますが、 右端の数字桁は小数点と隣り合っていなければなりません。
整数部分の数字桁には、3 桁ごとのグループに分割するコンマを付けても付けなくてもかまいません。 左端のグループは、1 桁、2 桁、または 3 桁のどれでもかまいませんが、 その後の各グループは必ず前にコンマが付いて、しかも 3 桁からなるグループでなければなりません。 コンマ記号の両側には必ず数字桁がくるようになっていなければなりません。
小数部分の数字桁をコンマで区切ることはできず、それらの数字桁の隣は必ず数字桁でなければなりません。
ID-1 の後に続く句はどのような順序でもかまいません。 指定されたすべての句は、それに先行する ID に適用されます。
AT 句は、ACCEPT 操作が開始される画面上の絶対アドレスを示します。 AT 句を指定しないと、ACCEPT 操作は第 1 行、第 2 列から開始されます。 この句は、先行属性の開始位置を示すものではありません。
COLUMN 句は、画面上で画面項目が始まる列を指定します。
COL は、COLUMN の省略形です。
LINE 句および COLUMN 句は、どのような順序で記入してもかまいません。
ID-2 は、内部浮動小数点データ項目であっても外部浮動小数点データ項目であってもいけません。
行および列番号の特定の組み合わせには、次のような特別な意味があります。
整数-2 は、4 バイトまたは 6 バイトの数字フィールドでなければなりません。
ID-3 または整数-2 の長さが 4 バイトの場合は、最初の 2 桁が行を指定し、次の 2 桁が列を指定します。 ID-3 または整数-2 の長さが 6 バイトの場合は、最初の 3 桁が行を指定し、次の 3 桁が列を指定します。
ACCEPT ステートメントが拡張されていることを示します。
ID は基本項目として扱われます。 したがって、ID がグループ項目であっても、1 つの項目として受け入れられます。
ON EXCEPTION を指定すると、ACCEPT 操作が通常の完了以外で終わった場合は、命令ステートメント-1 が実行されます。 つまり、CRT 状況キー 1 がゼロ以外の場合です。
ON EXCEPTION 句を使用しても、ワークステーション境界または画面範囲外などの条件に対する実行時メッセージが生成されないようにすることはできません。
NOT ON EXCEPTION を指定している場合、ACCEPT 操作が正常に完了して終了すると、命令ステートメント-2 が実行されます。
END-ACCEPT はオプショナルです。 ACCEPT ステートメントをネストする場合は、END-ACCEPT は必要です。
WITH 句を使うことによって、ユーザーは ACCEPT 操作の特定のオプションを指定することができるようになります。 そのようなオプションについては、以下に示す各句で説明します。
フィールドがオペレーター入力によって充てんされると、カーソルは、終了文字が入力されるのを待たずに、次の入力フィールドに自動的にスキップします。 そのフィールドがグループの最後のフィールドである場合は、AUTO-SKIP は、ENTER キーが押された場合と同じ効力をもちます。
AUTO と AUTO-SKIP はいずれを使ってもかまいません。
この句を含んでいる項目が受け入れられるたびに、警報音が鳴ります。
BELL と BEEP はいずれを使ってもかまいません。
画面項目が画面に表示されると明滅します。
オペレーターは、画面項目をまったく空のままにするか、または画面をデータで完全に埋め込むかのいずれかを行わなければなりません。 フィールド終了、フィールド +、フィールド - のキーを使用することはできません。 また、実行キーを押したあとに、入力フィールド内のデータに対して削除キーを使うこともできません。 最初に表示されるデータで FULL 句を満たすことができます。
この句がグループ・レベルに指定されている場合、該当する従属基本項目のすべてに適用されます。
FULL 句は、すべての ACCEPT ステートメントの実行中に効力があります。
FULL および LENGTH-CHECK は、いずれを使ってもかまいません。
画面項目が高輝度モードで画面に表示されます。
REQUIRED 句は、フィールドが空のまま残らないようにするために使用します。
英数字項目の場合、これは、フィールドにはスペースまたは 16 進ゼロ以外の文字が少なくとも 1 つ含まれていなければならないことを意味します。 数字項目の場合は、フィールドには必ずゼロ以外の数字が入っていなければなりません。
この句を指定したときにフィールドが空のままになると、実行時メッセージが出されて、ユーザーはリセット・キーを押してから、データを入力し直すように要求されます。
REQUIRED および EMPTY-CHECK 句は、いずれを使ってもかまいません。
画面項目が反転表示で示されます。
オペレーターが入力したデータが画面に表示されなくなります。 この句はグループ画面項目に指定できます。その場合、この句は、その項目に従属するすべての基本項目に対して適用されます。 SECURE 句が指定されているときは、画面項目内に現れるのはスペースとカーソルだけになります。
SECURE と NO-ECHO 同じ意味で使用されます。
画面に表示される画面項目に下線が引かれます。
オペレーターが入力した文字が画面のフィールドの右端の文字位置に移動されます。 後書きスペースおよび後書き 16 進ゼロは除去されます。
このオプションで影響を受けるのは、非編集データ項目だけです。 この句が効力を持つのは、データ項目の初期データが表示されたとき、および ACCEPT 操作が終了するときです。 これは、数字データを処理する唯一の方法です。
データ項目の定義に DATA DIVISION の JUSTIFIED RIGHT 文節を使った場合は、そのデータ項目は RIGHT-JUSTIFY 句が指定されていた場合と同じように処理されます。
画面上にデータ項目のサイズを指定します。 この句は基本データ項目にしか使用することができません。
指定されたサイズがゼロであれば、SIZE 句には影響がありません。 この場合、データ項目を表示するためにフィールドの長さが使用されます。
関連する PICTURE 文節によって暗黙指定されたサイズよりも小さなサイズが指定されると、ワークステーションの画面にはデータ項目の左端の部分だけが現れます。
数字または数字編集のデータ項目に対して指定したサイズが PICTURE 文節によって暗黙指定されたサイズよりも小さくなる場合には、 値の表示や ACCEPT 操作における事前表示の際に、値の右端が切り捨てられた状態で表示されます。 データ項目は MOVE 操作の規則に従って更新されます。
フィールドの長さが画面サイズを超える値を持つ SIZE リテラルを指定する場合には、 英数字データが切り捨てられたり、数字データが無視されるか、表示されなくなります。
JUSTIFIED が指定された項目に関しては、その項目の長さよりも小さいサイズを指定すると、右端の部分だけが現れます。
ユーザーが指定するサイズが、PICTURE 文節で暗黙指定されたサイズよりも大きい場合には、その項目の表示用部分にはスペースが埋め込まれます。 埋め込まれるのは右側です。
非編集データ項目の場合、後書きの 16 進ゼロはスペースに変換されて、項目はすべての文字位置でゼロ消去が行われて画面に表示されます。 この効果が現れるのは、データ項目の初期データが表示されたときと、データ項目内への ACCEPT 操作が終了したときです。 このオプションは、編集フィールドには影響を与えません。
演算符号がフィールドの右端の文字位置に表示されます。 この効果が現れるのは、データ項目の初期データが表示されたときと、ACCEPT 操作が終了したときです。 このオプションの影響を受けるのは、符号付きの非編集数字データ項目だけです。 このオプションを指定していないときは、符号は数字の前に付きます。
新しいデータをキー入力するようオペレーターにプロンプトが出される前に、データ項目の現在の内容が表示されます。 次いで、初期データは、オペレーターがキー入力した場合と同じように処理されます。
UPDATE 句がない場合には、一部のデータの事前表示を制御できます。 数字編集データだけを事前表示するには、EXTDSPOPT パラメーターの *ACCUPDNE オプションを指定します。 全データを事前表示するには、デフォルト・オプション *ACCUPDALL を使用します。
ゼロ消去が行われずに非編集データ項目が画面に表示されます。 左そろえデータの場合、後書きスペースおよび後書き 16 進ゼロはゼロに変換されます。 右そろえデータの場合、先行スペースがゼロに変換されます。
この効果が現れるのは、データ項目の初期データが表示されたときと、データ項目内への ACCEPT 操作が終了したときです。 編集フィールドには影響を与えません。
次に示す句は、構文検査を受けますが、以下のとおりです。
ID-1 がグループ項目で、しかも MODE IS BLOCK 句が付いていない場合には、FILLER 以外の名前が付いた基本従属項目が受け入れられます。 このような基本項目は、その記述が DATA DIVISION 内に記入されている順序に従って画面上に配置され、それぞれの項目の間はグループの FILLER 項目の長さ分だけ空けられます。
このため、行上の最初の位置は、直前の行の最後の位置にすぐに続くものと見なされます。 項目の受け入れもこれと同じ順序で行われます。
CURSOR 文節に特に指定がない限り、はじめはカーソルは最初の項目の先頭を指し示します。 各項目への ACCEPT 操作が終了すると、カーソルは次の項目の先頭に移動します。
CURSOR 文節がフィールドの位置に影響を与えることはありません。 唯一行えるのは、決められた規則に従って ACCEPT ステートメントのカーソル位置を変更することだけです。
記号 P を含んでいる PICTURE 文節を持つ数字項目は、拡張 ACCEPT ステートメントではサポートされません。
MODE IS BLOCK を指定しない限り、データ項目には固定長テーブルを入れることはできません。 また、MODE IS BLOCK を指定するしないにかかわらず、データ項目には可変長のテーブルを入れることはできません。
拡張 ACCEPT ステートメントと拡張 DISPLAY ステートメントの両方について、次のことを考慮する必要があります。
拡張 ACCEPT または DISPLAY 操作では、24 行、80 桁の画面形式がサポートされます。
拡張 ACCEPT または DISPLAY 操作が処理されたときは、それ以外のディスプレイ・ファイルをプログラムでオープンすることはできません。 拡張 ACCEPT および DISPLAY ステートメントが含まれているプログラムの 中に TRANSACTION ファイルがコーディングされている場合、 ユーザーは拡張 ACCEPT または DISPLAY ステートメントが TRANSACTION I/O の介入を受けないように気を付ける必要があります。 また、逆に、TRANSACTION I/O が拡張 ACCEPT または DISPLAY ステートメントの介入を受けないように気を付ける必要もあります。
添え字付き項目および参照変更項目は両方ともサポートされています。
CRTCBLMOD または CRTBNDCBL コマンドで EXTDSPOPT(*NODFRWRT) パラメーター (非据え置き書き出し) を指定しない場合、ILE COBOL コンパイラーは、次の ACCEPT ステートメントが発生するまで、 すべての拡張 DISPLAY ステートメントをバッファーに入れます。 *NODFRWRT オプションがあれば、DISPLAY ステートメントをその発生時に実行 することにより、データ・エラーをその原因であるステートメントに関連付けることが できます。据え置き書き出し (*DFRWRT) オプションは、連続する DISPLAY ステート メントが生成したデータ・ストリームをバッファリングすることにより 、パフォーマンスを改善します。
DBCS プログラムは、DBCS システム上でコンパイルされた場合にのみ、DBCS システム上で実行できます。
1 つの ACCEPT または DISPLAY ステートメントで、1 つの WITH 句に UNDERLINE、HIGHLIGHT、および REVERSE-VIDEO 句が含まれている場合には、HIGHLIGHT 句が無視されます。 このような組み合わせがコーディングされると、コンパイル時に警告メッセージ (LNC0265) が出されます。 拡張 DISPLAY ステートメントの中では、UPON CRT-UNDER 句は UNDERLINE 句と同等です。 フィールドが画面上に表示されないようにするには、SECURE オプションを使用します。
拡張 ACCEPT/DISPLAY ステートメントと TRANSACTION ファイルを同一のプログラムで使用することはお勧めできません。 拡張 ACCEPT/DISPLAY ステートメントが TRANSACTION ファイルと同一のプログラムで使用されている場合には、 拡張 ACCEPT/DISPLAY ステートメントの実行時に、TRANSACTION ファイルをクローズする必要があります。 TRANSACTION ファイルのオープン時に、拡張 ACCEPT/DISPLAY ステートメントを実行するならば予測不能な結果が生じます。 重大エラーが生成されたり、ワークステーション上のデータの重なり合いまたは混合が生じる場合もあります。
拡張 ACCEPT および DISPLAY ステートメントは、5251-12 型制御装置に接続しているリモート・ワークステーションでは実行しません。
CRTCBLMOD または CRTBNDCBL コマンドの EXTDSPOPT(*NOUNDSPCHR) パラメーターにより、 拡張 ACCEPT ステートメントおよび DISPLAY ステートメントを 3174 および 3274 制御装置に接続しているリモート・ワークステーションで使用できます。 ただし、ユーザーのデータに非表示文字が含まれていてはなりません。 リモート制御装置の使用中、データの受け入れを行うために CLEAR キーおよび HELP キーを使用することはできません。
ILE COBOL の拡張 ACCEPT および DISPLAY ステートメントは、ACCEPT および DISPLAY ステートメント (形式 2) に類似しています。 異なる点については 付録 I, ACCEPT/DISPLAY および COBOL/2 に関する考慮事項で説明します。
+------------------------------End of IBM 拡張-------------------------------+