ACCEPT文

ACCEPT(受取り)文は、操作卓からキー入力されるデータ、またはオペレーティングシステムから提供されるデータを、指定されたデータ項目に入れてプログラムで利用できるようにする。

一般形式

形式 1

形式 2

形式 3

形式 4

形式 5

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

    • ACCEPTREFRESH - ACCEPT文の前に、画面節のデータに関連するデータ領域を作業場所節中の対応する項目によって更新するか否かを指定する。

    • XOPEN - ACCEPT文の前に、画面節のデータに関連するデータ領域を作業場所節中の対応する項目によって更新するか否かを指定する。

構文規則

形式 1
  1. 形式 1の呼び名は、環境部の特殊名段落中の機能名に関連させる。 有効な機能名に関しては、環境部の章の特殊名段落節の中の一般規則12 を参照。

  2. 機能名に関連する呼び名の代わりに、機能名そのものを使用できる。

  3. 呼び名が特殊名段落中のARGUMENT-NUMBERと関連するときは、一意名は符号の付かない整数とする。

  4. 呼び名が特殊名段落中のARGUMENT-VALUEまたはENVIRONMENT-VALUEと関連するときは、一意名は英数字データ項目とする。

  5. 一意名は、USAGE DISPLAY-1(2バイト文字)項目でも、外部浮動小数点数データ項目でもよい。

    一意名は、内部浮動小数点数データ項目でもよい。

  6. EXCEPTION 指定は、FROMがENVIRONMENT-NAMEかARGUMENT-VALUEと共に指定された時、またはこれと関連する呼び名で指定された時にだけ、指定することができる。
形式 2
  1. 一意名は、内部浮動小数点数データ項目でも、外部浮動小数点数データ項目でもよい。
形式 3
  1. 一意名の字類、項類、用途には何の制限もない。しかし、一意名に入れられる実際の値およびその値を一意名に転記することの妥当性は、FROM指定に左右される。(詳細については、形式 3に関する一般規則を参照)。
形式 4
  1. 画面名は、OCCURS句に含まれる項目であってはならない。
形式 4 および 5
  1. LINE指定およびCOLUMN指定は、どちらから先に書いてもよい。

  2. EXCEPTIONとESCAPEは同義であり、どちらを書いてもよい。

  3. 一意名-4は、PIC 9(4)またはPIC 9(6)のデータ項目とする。
形式 5
  1. 一意名-8は整数とする。符号付きとすることができる。

  2. 整数-7は符号付きとすることができる。

  3. 形式 5に該当するACCEPT文は作用対象が画面名でなく、AT指定、CRTオプションを伴うFROM指定、WITH指定、MODE IS BLOCK指定、EXCEPTION指定のどれかが指定されているもの、またはFROM指定は指定されていないが特殊名段落にCONSOLEオプション句が指定されているものである。CONSOLEオプション句を伴うFROM指定が指定されているか、FROM指定が指定されておらず特殊名段落にCONSOLE IS CRT句も指定されていないACCEPT文は、形式 1のACCEPT文として扱われる。

  4. 一意名の後ろに続ける指定は、どのような順序で書いてもよい。

  5. SPACE-FILL, ZERO-FILL, LEFT-JUSTIFY, RIGHT-JUSTIFY, PROMPT, TRAILING-SIGNオプションを指定できるのは、作用対象が基本項目の場合だけである。

  6. 一意名-1に属する基本項目の用途は、USAGE DISPLAYとする。

  7. 一意名-1に属する非基本項目は8191バイトより大きいことがある。MODE IS BLOCK句を使用した場合、一意名-1の全体の長さは8191バイト以下にすること。

一般規則

すべての形式
  1. END-ACCEPT指定はACCEPT文の範囲を区切る。(COBOL言語の概念の章の明示範囲符と暗黙範囲符節を参照。)MF(4)コンパイラ指令を設定した場合にのみ、END-ACCEPTは予約語として扱われる。
形式 1
  1. ACCEPT文は論理装置または物理装置からデータを移送する働きをする。そのデータによって、一意名が指すデータ項目の内容が置き換えられる。一意名が指すデータ項目に用途としてDISPLAYが明示的または暗黙的に指定されている場合、フォーマットの変換なしに直ちにその置換が行われる。そうでない場合には、正しいフォーマットへの変換が行われる。

    データ移送のサイズは装置とランタイム環境とによって決まる(使用可能な機能名のリストについては、環境部の章の特殊名段落節を、装置およびデータ移送サイズの制限の詳細についてはCOBOLシステムのマニュアルを、それぞれ参照)。

    装置が受取り側データ項目と同じサイズのデータを移送できる場合には、移送されたデータが受取り側データ項目に収められる。そうでない場合は、下記のように扱われる。

    1. 受取り側データ項目(または現在まだ移送されたデータによって占められていない部分)のサイズが移送されるデータのサイズを超える場合は、移送されたデータが受取り側データ項目(またはまだ空いている部分)中に左詰に収められ、さらにデータが要求される。

    2. 移送されたデータのサイズが受取り側データ項目(または現在まだ移送されたデータによって占められていない部分)のサイズを超える場合は、移送されたデータの左端から受取り側データ項目(または残りの部分)に収まる分だけが受け取られる。移送されたデータのうちの受取り側データ項目に収まらない残りの部分は無視される。

    FROMオプションを指定しなかった場合は、FROM CONSOLEと指定したのに等しい。

  2. COMMAND-LINE、またはそれに関連する呼び名を指定すると、受取り側データ項目はシステムのコマンド行バッファによって上書きされる。

  3. 機能名ARGUMENT-NUMBERに関連する呼び名を使用すると、一意名はコマンド行中に含まれる引数を受け取る。(これには、すべての引数が含まれる。つまり、プログラム名の前にある引数、プログラム名自体、プログラム名の後ろに続く引数が含まれる。したがって、プログラム呼出しの種類によっては移植性を期待できない)。

  4. 呼び名がARGUMENT-NUMBERに関連する時、一意名は現在のコマンド行の引数になる。どのコマンド行の引数を現在のものとするかの決定は、下記の通りである。

    1. はじめに、最初のコマンド行の引数を現在のものとする。

    2. ARGUMENT-NUMBERに関連する呼び名をもつDISPLAYが、現在のコマンド行の引数の数をDISPLAY文で指定された一意名または定数の値に設定する。

    3. ARGUMENT-NUMBERに関連する呼び名をもつDISPLAYが最後に実行されてから、ARGUMENT-VALUEに関連する呼び名をもつACCEPTが実行された時は、現在のコマンド行の引数の数はこのACCEPT文が使用される前に増やされる。

    現在の引数の数が0に設定されていると、これは、実行単位の主プログラムのプログラム名が返されることを意味する。しかし、プログラムの呼出しにいろいろな変形があるため、主プログラム名の代わりにユーティリティプログラムまたは呼ぶプログラムの名前が返されることがある。

    ACCEPT文の実行時に現在の引数の数が

    99より大きいか、0より小さいか、

    コマンド行上の実際の引数の数よりも大きい場合、無条件文-1が指定されていると、これが実行される。

  5. 機能名ENVIRONMENTAL-VALUEに関連する呼び名を使用した場合、下記のようになる。

    1. ENVIRONMENT-NAMEに関連する呼び名をもつDISPLAYが前に実行されていると、指定された環境変数の値が一意名に入れられる。

    2. ENVIRONMENT-NAMEに関連する呼び名をもつDISPLAYが前に実行されていないか、または指定された環境変数が存在しないと、ON EXCEPTION指定に指定されている無条件文が実行される。この場合、一意名の値はどうなるかわからない。

  6. 他のプログラムによって呼ばれたプログラムの中で、コマンド行の引数および引数の数を検索する効果は、それらを実行単位中の最初のプログラムによって検索する場合と同じである。
形式 2
  1. ACCEPT文は、要求された情報を一意名によって指定されたデータ項目に取り込む。その際、MOVE文の規則が適用される。DATE、DAY、

    DAY-OF-WEEK、

    およびTIMEは概念的なデータであり、COBOLプログラム中には記述されていない。

  2. 指定 YYYYMMDDを含まないDATEは、(1世紀の中の)年、(1年の中の)月、(1ヶ月の中の)日のデータ要素から構成される。指定 YYYYMMDDを含まないDATEは、COBOLプログラムからアクセスされると、用途がDISPLAYで、6桁の符号なしの基本整数データ項目として記述されたものとして動作する。このデータ項目の文字位置(左から右に)は以下の通り。

    文字位置 内容
    1-2 グレゴリオ歴(西暦)の年号の下2桁の数字
    3-4 1年の範囲内で、月を表す01から12までの2桁の数字。
    5-6 1ヶ月の範囲内で、日を表す01から31までの2桁の数字。

  3. 指定 YYYYMMDDを含むDATEは、グレゴリオ歴の年号、(1年の中の)月、(1月の中の)日のデータ要素から構成される。指定 YYYYMMDDを含むDATEは、COBOLプログラムからアクセスされると、用途がDISPLAYで、8桁の符号なしの基本整数データ項目として記述されたものとして動作する。このデータ項目の文字位置(左から右に)は以下の通り。

    文字位置 内容
    1-4 グレゴリオ歴の年号の4桁の数字
    5-6 1年の範囲内で、月を表す01から12までの2桁の数字。
    7-8 1ヶ月の範囲内で、日を表す01から31までの2桁の数字。

  4. 指定 YYYYDDDを含まないDAYは、(1世紀の中の)年、(1年の中の)日のデータ要素から構成される。指定 YYYYDDDを含まないDAYは、COBOLプログラムからアクセスされると、用途がDISPLAYで、5桁の符号なしの基本整数データ項目として記述されたものとして動作する。このデータ項目の文字位置(左から右に)は以下の通り。

    文字位置 内容
    1-2 グレゴリオ歴の年号の下2桁の数字
    3-5 1年の範囲内で、日を表す01から366までの3桁の数字。

  5. 指定 YYYYDDDを含むDAYは、グレゴリオ歴の年号および (1年の中の)日のデータ要素から構成される。指定 YYYYDDDを含むDAYは、COBOLプログラムからアクセスされると、用途がDISPLAYで、7桁の符号なしの基本整数データ項目として記述されたものとして動作する。このデータ項目の文字位置(左から右に)は以下の通り。

    文字位置 内容
    1-4 グレゴリオ歴の年号の4桁の数字
    5-7 1年の範囲内で、日を表す01から366までの3桁の数字。

  6. DAY-OF-WEEKは、曜日を表わす単一のデータ要素から構成される。COBOLプログラムからDAY-OF-WEEKを呼び出すと、そのプログラムの中で、1桁の符号の付かない整数の基本データ項目として記述してあるように取り扱うことができる。DAY-OF-WEEKは1から7までの値をとり、それぞれ月曜日から日曜日を表わす。

  7. TIMEは、時間、分、秒、百分の1秒の4つの要素から構成される。この時間は夜中の0時から24時間制で測られる。たとえば、午後2時41分は14410000と表わされる。COBOLプログラムからTIMEを呼び出すと、そのプログラムの中で、符号の付かない8桁の整数の基本データ項目として記述してあるように取り扱うことができる。TIMEの最小値は00000000であり、最大値は23595999である。 ハードウエアの時間測定の精度が上記よりも低い場合は、得られた値は最も近い近似値に変換される。

形式 3
  1. ACCEPT FROM LINE NUMBER句から返される値は、つねに数字である。この値は、使用しているシステムによって異なる。

  2. FROM USER NAMEオプションは、UNIXシステム上のユーザー識別番号を返す。このような概念のないシステム上では、このオプションは空白を返す。

  3. FROM ESCAPE KEYオプションは、終了キーによって発生させられた2文字のコードを返す。

  4. EXCEPTION STATUS項目には、3桁のコードが入っている。このコードは、CALL文を実行中に発生した、例外条件の種類を識別する。

    EXCEPTION STATUSを調べる場合は、CALL文の直後で行うのがよい。 CALLとACCEPT FROM EXCEPTION STATUSとの間には、何もあってはならない。たとえば、その間にファイル入出力をはさむと、EXCEPTION STATUSが変えられてしまうので、その内容を調べる意味がなくなってしまう。 .

形式 4
  1. ACCEPT文のこの書き方は、画面節中に定義されている画面項目を受け取って、拡張画面操作機能によって全面的に処理できるようにする。

形式 4 および 5
  1. ACCEPT文の実行順序は、つねに以下のとおりである。

    1. AT指定

    2. BLANK指定

    3. コンパイラ指令ACCEPTREFRESHまたはXOPENのどちらかが指定されていると、USING指定で現在の画面項目の内容が表示される。

    4. BELL指定

    5. ACCEPT操作

  2. AT指定は、ACCEPT処理を開始する画面上の絶対番地を指定する。

  3. 整数-3または整数-4の長さが4桁ならば、上2桁は行を表わし、下2桁はカラムを表わす。整数-3の長さが6桁ならば、上3桁は行を表わし、下3桁はカラムを表わす。

  4. 行番号とカラム番号の組合わせの中には、特殊な意味をもつものがある。それらは下記のとおり。

    1. カラムの値が1行のカラム数よりも大きいと、その値から1行のカラム数が差し引かれ、行数に1が加えられる。カラムの値が1行のカラム数の範囲内におさまるまで、この処理が繰り返される。

    2. 行の値が画面の範囲から外れると、画面が1行上にスクロールされる。この効果は、画面の下端の行を指定したのと同じである。

    3. 与えられた行番号とカラム番号がともにゼロであると、形式 4または5の前のACCEPT処理が終わった位置の直後から、ACCEPTが開始される。各行のカラム1は、前の行の最後のカラムに続くものとみなされる。

    4. 指定された行番号がゼロであるがカラム番号はゼロでないと、形式 4または5の前のACCEPT処理が終わった位置の次の行の指定されたカラムから、ACCEPTが開始される。

    5. 指定されたカラム番号がゼロであるが行番号はゼロでないと、形式 4または5の前のACCEPT処理が終わった位置の次のカラムの指定された行から、ACCEPTが開始される。

  5. この ACCEPT文を実行する前に、このACCEPT文に指定されたのと同じ画面名または一意名-1が指定されているDISPLAY文が実行されていなければならない。それ以降に何らかのACCEPT文またはDISPLAY文が実行されていてはならない。

  6. ON EXCEPTION指定を書くと、ACCEPT処理が正常終了しなかった場合に、無条件文-1が実行される。NOT ON EXCEPTION指定を書くと、ACCEPT処理が正常終了した場合に、無条件文-2が実行される。(終了の種類については、環境部の章の特殊名段落節のCRT STATUS句の規則を参照。)

形式 5

  1. AT指定を指定しないと、ACCEPT処理は行1、カラム1から開始される。

  2. MODE IS BLOCK指定を指定しないと、一意名が集団項目であれば、それに属する基本項目で名前がFILLERでないものが受け取られる。受け取られる項目は、データ部内でそれらが記述されている順に画面に配置され、集団内のFILLERの長さによって区切られる。この用途では、ある行の最初の位置は、その前の行の最後の位置の直後に続くものとみなされる。項目は、同じ順序で受け取られる。

    CURSOR IS句(環境部の章の特殊名段落節のCURSOR IS句の規則を参照)内で別途指定しないかぎり、カーソルは最初の項目の始点に位置付けられる。各項目へのACCEPT処理が終わるにつれて、カーソルは次の項目の始点に移動される。

  3. 一意名-1が集団項目であり、その下位に可変反復データ項目がある場合、ACCEPT文はMODE IS BLOCK句が指定されているかのように動作する。

  4. 一意名-1が集団項目であり、その下位に可変反復データ項目がある場合、ACCEPT文はMODE IS BLOCK句が指定されているかのように動作する。

  5. MODE IS BLOCK指定は、一意名を基本項目として扱うように指定する。こうすると、一意名が集団項目であっても、1つの項目として表示される。

  6. PROMPTオプションを指定した効果は、データ部 - 画面節の章の PROMPT(プロンプト)句節で解説している。

  7. PROMPTオプションを指定しないと、空の文字位置を示すための文字は表示されない。CHARACTERオプションを抜かしてPROMPTを指定すると、構成時にプロンプト用に設定されている文字が文字位置の表示に用いられる。

  8. WITH指定を用いると、ある種のオプションをACCEPT処理の実行時に指定できる。(これらのオプションの説明については、データ部 - 画面節の章を参照。)

    画面記述句に指定できるオプションの他に、WITH指定にはいくつかのオプションが加えられている。SPACE-FILL, ZERO-FILL, LEFT-JUSTIFY, RIGHT-JUSTIFY, TRAILING-SIGN, UPDATEである。ZERO-FILLはこのリストにも画面記述句にも現れている。これは、ZERO-FILLには2つの用法があるからである。2番目の用法については、この章で後述する。

    自由方式で、数字および数字編集の画面項目にデータを入力できるようにする構成オプションがある。COBOLでは、非編集数字データ項目は、内部形式でデータを保持することを目的としたものである。しかし、この形式を用いると、そのようなデータ項目を画面上に表示できる(詳細は、ユーザーインターフェイスに関するCOBOLシステムのマニュアルを参照のこと)。自由方式がとられているときは、データは自動的に下記のように編集されて表示される。

    • 仮想小数点を終止符で表わす。

    • 符号を符号文字で表わす(負の数は"-" で、正の数は空白で)。符号は左端の数字の直前に付けられる。

    • すべての整数文字位置の先行ゼロが抑制される。ただし、最末桁を除く

    • 左に桁寄せされる。

    SPACE-FILL、ZERO-FILL、LEFT-JUSTIFY、RIGHT-JUSTIFY、およびTRAILING-SIGNオプションを使用すると、上記の形式を補正できる。

  9. SPACE-FILLオプションは、自由方式の非編集数字データ項目の、すべての整数文字位置の先行ゼロを抑制して、画面に表示するようにする。このオプションは、自由方式の非編集数字データ項目に対してだけ働く。この機能は、データ項目中の初期データが表示されるときに効力を発揮し、そのデータ項目へのACCEPT処理が終了するときにも再び効力を発揮する。左端に付された符号があれば、右端に表示される。

  10. ZERO-FILLオプションは、自由方式の非編集数字データ項目をゼロ抑制しないで、画面に表示するようにする。この機能は、データ項目中の初期データが表示されるときに効力を発揮し、そのデータ項目へのACCEPT操作が終了するときにも再び効力を発揮する。(英字または英数字のデータ項目にこのオプションを適用したときの効果については、データ部 - 画面節の章のZERO-FILL(ゼロ補填)句節を参照)。

  11. LEFT-JUSTIFYオプションは、注記にすぎない。

  12. RIGHT-JUSTIFYオプションは、入力されたデータを項目の右に桁寄せして、画面に表示するようにする。このオプションは、自由方式の非編集数字データ項目に対してだけ働く。この機能は、データ項目中の初期データ(表示された現在の内容)が表示されるときに効力を発揮し、そのデータ項目へのACCEPT処理が終了するときにも再び効力を発揮する。

  13. TRAILING-SIGNオプションは、演算符号を項目の右端の文字位置に表示するようにする。この機能は、データ項目中の初期データが表示されるときに効力を発揮し、そのデータ項目へのACCEPT処理が終了するときにも再び効力を発揮する。このオプションは、自由方式の非編集数字データ項目に対してだけ働く。

  14. UPDATEオプションは、データ項目の現在の内容(初期データ)を表示してから、新しいデータの入力を促すようにする。新しいデータが何も入力されないと、初期データが入力されたかのように扱われる。UPDATEオプションを指定しないと、初期データが表示されるか否かは構成オプションによる(構成オプションの詳細については、ユーザーインターフェイスに関するCOBOLシステムのマニュアルを参照のこと)。

  15. UPPERオプションは、入力された文字を強制的に大文字にする。

  16. LOWERオプションは、入力された文字を強制的に小文字にする。

  17. 一意名-1にREDEFINESがかかっている場合、再定義データ領域の最初の記述が使用され、以降の記述は無視される。OCCURSまたは入れ子になったOCCURSが指定されている場合、反復されるデータ項目はその反復回数だけ展開される。したがって、1つの定義が多数の項目にわたって繰り返されることになる。

  18. 一意名-8または整数-7の値が負の場合、時間切れによる"例外条件"を発生させないという要求を表わす。この場合、キーが打鍵されるまでの時間またはキーの打鍵間隔がどんなに長くなっても、例外条件は発生しない。

  19. 一意名-8または整数-7の値がゼロの場合、入力待ちの間は時間切れを起こさせないことを意味する。しかし、入力待ちでない(ACCEPTが処理された)ときには、直ちに時間切れとする。

  20. ON EXCEPTION指定を書くと、TIME-OUT指定が指定してあって時間切れが発生したときに実行される。NOT ON EXCEPTION指定を書くと、TIME-OUT指定が指定してあるが時間切れ(または他の例外条件)が発生しなかったときに実行される。

  21. 時間切れ例外条件が発生すると、ACCEPTの結果の項目は下記のようになる。

    1. 項目の一部が既に変更されていると、その時点の内容がそのまま保持される。

    2. "FULL"や"REQUIRED" をはじめとする、通常は部分的な入力を許さない属性をもつ項目でも、時間切れ例外条件が発生したときは、その要件を満たすことを求められない。

    3. 上記の規則は、キーを打つたびに時間切れ測定用の時計が再設定されるか否かにかかわらず、適用される。

  22. 実行時に百分の2,147,483,647秒よりも大きな正の時間切れ間隔が検出されると、その値は百分の2,147,483,647秒(約8カ月)に設定し直される。

  23. TIME-OUTの値は、ACCEPT文の実行が開始されてから時間切れ例外条件が発生するまでの時間を、秒(または十分の一秒)単位で指定する。新しいADISCF構成オプションは、キーボード上で何か操作が行われるたびに、時間切れ測定用の時計を"再設定"するか否かを制御する。ACCEPT文によって時間切れ測定用の時計を再設定したりしなかったりする応用では、設定状態の変更を必要とするACCEPT文の前または後ろで、ADIS実行時インターフェイスを個別に呼ぶことができる。たとえば、時間切れ測定用の時計を再設定しないようにADISが設定されているときに、次の文を実行したとする。
     ACCEPT INPUT-FIELD TIME-OUT AFTER +10

    すると、ACCEPTの開始から10秒経過後に、時間切れ条件が発生する。この場合、ACCEPTの開始5秒後に何か文字を打ったとしても、時間切れ条件の発生を防ぐことにはならない。

    また、時間切れ測定用の時計を再設定するようにADISが設定されているとする。すると、上記の同じ文を実行した場合、何か文字を打つたびにTIMEOUT"時計"はゼロに設定し直される。

  24. ON EXCEPTION指定を指定しないと、時間切れ条件が発生したときに、CRT状態キー(指定してあれば)が更新され、処理は次の論理的な指定まで続行される。このとき、ACCEPTの受取り側項目の内容は上に説明したとおりである(このことは、NOT ON EXCEPTION指定を指定した場合にも、当てはまる)。

  25. (NOT)ON EXCEPTION指定に関する説明はすべて、(NOT)ON ESCAPE指定にも当てはまる。

形式 1 および 5
  1. 英数字データ項目に関しては、ACCEPT文の実行中に画面から受け取られたフィールドのサイズは、宛先のフィールドのサイズとまったく同じである。したがって、フィールドの右側の部分にデータを表示したい場合には、その位置にカーソルを合わせてデータを入力しなければならない。