特殊名段落

機能

特殊名(special-names)段落は、通貨記号および通貨文字列、小数点,

記号文字、

利用者が指定する呼び名に対する作成者語、文字集合や文字の照合順序に対する符号系名、文字の組に対するクラス名などの、指定または選択を行う手段を示す。

パラメータの引渡し方について予め定義してあるいくつかの方式の中から、1つを選択できる。CALL(呼ぶ)文およびPROCEDURE DIVISIONの見出しの拡張機能によって、これらのパラメータ引渡し方式をプログラム間連絡に使用できるようになった。

例:

  1. CRT状態キーの使用方法については、言語リファレンス - 追加トピック中のの章特殊名段落のCRT STATUS句節を参照。

一般形式

指令

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

    • ALPHASTART - ALPHABET句の中で使用する有効な数値定数が0と1のどちらで始まるかを指定する。

    • CHARSET - どのアルファベットを固有文字集合とみなすかに影響する。環境によっては、この指令は無視される。

    • NATIVE - どのアルファベットを固有文字集合とみなすかに影響する。

    • SYMBSTART - SYMBOLIC CHARACTERS句の中で使用する有効な数値定数が0と1のどちらで始まるかを指定する。

構文規則

  1. 特殊名段落中の句は、どのような順序で書いても構わない。

  2. クラスを定義する原始単位の外側のレベルでは、CURSORおよびCRT STATUS句を指定してはならない。

  3. クラス定義のファクトリまたはオブジェクトにおいては、指定できる句はCURSORおよびCRT STATUSだけである。

  4. ンターフェイス定義中に特殊名段落を指定した場合、使用できる句はALPHABET, CURRENCY, DECIMAL-POINTだけである。

  5. 呼び名には、任意のCOBOLの利用者語を当てることができる。最低限1文字は英字とする。

  6. 関数名は、COBOLコンパイラによって使用されるシステム装置または機能を参照する。

    関数名がUPSI-0からUPSI-7のどれかである場合、関数名は外部スイッチを参照する。

  7. 関数名が外部スイッチを参照するか、

    またはSWITCH-nオプションが使用されている

    場合は、その呼び名は指定できない。

    ただし、SET文の中でだけは指定できる。

    その呼び名には、条件名を最低限1つ付ける。

    条件名を付ける必要はない。

  8. 外部スイッチを参照しない関数名に対応する呼び名を指定できるのは、ACCEPT(受け取り)、DISPLAY(表示)、SEND(送信)、WRITE(書き出し)の各文だけである。このような作成者語に条件名を関係付けることはできない。

  9. 符号系名-1句の定数句の中に指定する定数は、下記のようにする。

    1. 数字である場合は、符号の付かない整数とし、その値は1以上で、計算機に固有の文字集合の文字の個数以下とする。

      ALPHABET(符号系名)句の中の数字定数の有効な最小値は、ALPHASTART指令の影響を受ける。

    2. 文字であり、THROUGH(から)指定またはALSO(もまた)指定を指定した場合、すべて長さは1文字とする。

    3. 浮動小数点数または2バイト文字は指定できない。

  10. 符号系名-1句の定数句を指定する場合、1つの符号系名の中に同じ文字を2回以上書いてはならない。

  11. THRUとTHROUGHは同義語であり、どちらを書いてもよい。

  12. STANDARD-D1とASCIIは同義語であり、どちらを書いてもよい。

  13. 特殊名段落の中では、予約語のISはまったく必要ない。

  14. 定数-4句の中に指定する定数は、下記のようにする。

    1. 数字である場合は、符号の付かない整数とし、その値は1以上で、計算機に固有の文字集合の文字の個数以下とする。

    2. 文字でありTHROUGH(から)指定を指定した場合、すべて長さは1文字とする。

    3. 浮動小数点数または2バイト文字は指定できない。

  15. 定数-1から定数-5には、記号文字の表意定数を指定してはならない。

  16. 1つのSYMBOLIC CHARACTERS (記号文字)句の中には、同じ記号文字-1は1回だけ使用できる。

  17. 各記号文字-1とそれに対応する各整数-1とは、SYMBOLIC CHARACTERS句の中の位置によって関係付けられる。最初の記号文字-1が最初の整数-1と対にされ、2番目の記号文字-1が2番目の整数-1と対にされるという具合いに、SYMBOLIC CHARACTERS句全体を通じて対応付けが行われる。ISまたはAREを間に置くのは読みやすくするためだけである。

    整数-1の有効な最小値は、SYMBSTARTコンパイラ指令の影響を受ける。

  18. 記号文字-1に指定する一連の文字と整数-1に指定する一連の数字とは、1対1で対応させる。このことは、各IS指定またはARE指定の内部でも、SYMBOLIC CHARACTERS句全体でも、当てはまる。

  19. 整数-1で指定する文字位置は、計算機固有の文字集合の中に存在させる。 IN指定を書く場合は、符号系名-2で指定する文字集合の中に、整数-1で指定する文字位置を存在させる。符号系名-2は、ALPHABET(符号系)句に指定してあるものとする。

  20. 定数-6は、英数字の定数でなければならない。

    または、各国語の定数でなければならない。

  21. 定数-6は表意定数であってはならない。

  22. PICTURE SYMBOL指定が使用されていない場合は、定数-6は、1文字から成るものとする。ただし、以下の文字を除く。

    1. 0 から 9までの数字

    2. 英字のA、B、C、D、L、P、R、S、V、X、Z、およびその小文字、および空白

      C または R は使用可能

      L は使用可能

      E は使用不可

      N は使用不可

      G は使用不可

      小文字の英字は使用不可

      小文字の英字は、ここで使用不可と明記されているものを除き、使用可能

    3. 記号、 '+' '-' ',' '.' '*' '/' ';' '(' ')' '"' '='

  23. PICTURE SYMBOLが使用されている場合は、定数-6の長さに制限はなく、以下に従うものとする。

    1. 空白以外の文字を1個含む。

    2. 計算機の符号化文字セットの文字のすべてが使用可能。ただし、0 から 9 の数字と記号の '+' '-' ',' '.' '*'を除く。

  24. 定数-7は、1字の英数字定数から成るものとし、表意定数であってはならない。同じ定数-7が複数存在してはならない。

  25. 定数-7には、計算機の符号化文字セットの文字のすべてが使用可能。ただし、以下を除く。

    1. 0 から 9 の数字

    2. 英字のA、B、C、D、E、N、P、R、S、V、X、Z、およびその小文字、および空白

      C および Rは使用可能

      G は使用不可

    3. 記号、 '+' '-' ',' '.' '*' '/' ';' '(' ')' '"' '='

  26. 定数-6の字類が英数字の場合は、関連づけられた通貨記号は、用途がDISPLAYである数字編集項目の定義にのみ使用可能とする。

    定数-6 の字類が各国語型の場合は、関連づけられた通貨記号は、用途がNATIONALである数字編集項目の定義にのみ使用可能とする。

  27. 整数-2は、0から65535までの符号のつかない整数とする。

  28. CURSOR IS 句のデータ名-1は、作業場所節 で宣言されなければならない。

  29. CRT STATUS 句は、各形式 4以降の状態値の転記先となるデータ項目を指定する。

    または、各形式 5 以降の状態値の転記先となるデータ項目を指定する。

    または、各ACCEPT 文以降の状態値の転記先となるデータ項目を指定する。環境によっては、これは作業場所の最初の64Kでのみ定義可能。

  30. データ名-2 は作業場所節で記述され、3バイトの長さでなければならない。

  31. CURSOR IS句は、ACCEPT文によって使用されるカーソルの番地を保持するデータ項目を指定する。

一般規則

  1. 外部スイッチは、実行時に操作員によって設定される。その設定は、 関連する条件名を検査することで判定される。

  2. 呼び名が外部スイッチと関係付けられている場合、形式 1 のSET(設定)文を実行することによって、その外部スイッチの状態を変更できる。(手続き部 - SEARCH - XML PARSEの章のSET(設定)文節を参照。)

  3. 符号系名-1句は、文字符号系(character code set)または文字の照合順序に名前を付ける働きをする。PROGRAM COLLATING SEQUENCE句(前述の実行用計算機段落節を参照)、またはSORT 文かMERGE文(手続き部 - SEARCH - XML PARSEの章のSORT(整列)文節および手続き部 - MERGE - OPENの章のMERGE(併合)文節を参照)の中のCOLLATING SEQUENCE句の中で符号系名-1が参照される場合、符号系名-1は文字の照合順序を示すことになる。ファイル記述項(データ部 - ファイルおよびデータ記述の章のファイル記述項の全体的な骨組み節を参照) のCODE-SET(符号系)句の中で符号系名-1が参照される場合、符号系名-1は文字符号系を示すことになる。

    1. STANDARD-1または

      ASCII

      指定が含まれる場合は、文字符号系または文字の照合順序は、米国標準規格X3.4-1968に規定されている情報交換用米国標準コードとなる。

      STANDARD-2指定が含まれる場合は、文字符号系は、国際標準646の情報処理交換用7ビット・コード化文字集合に規定されている、ISO7ビット・コードの国際参照版となる。

      EBCDIC指定が含まれる場合は、文字符号系および文字の照合順序はEBCDICとなる。

      NATIVE(計算機固有)句を指定すると、計算機に固有の文字符号系または文字の照合順序が使用される。計算機に固有の文字の照合順序は、NATIVE指令を使用して、ASCIIまたはEBCDICのどちらかに設定できる。

      ASCII符号系およびASCIIとEBCDICの文字の照合順序と両者の対応関係については、付録の文字符号系と文字の照合順序の章を参照。

    2. 定数句を指定すると、符号系名-1はCODE-SET句の中では参照できない(データ部 - ファイルおよびデータ記述の章のCODE-SET(符号系)句節を参照)。 文字符号系または文字の照合順序は、下記の規則に従って定義される。

      1. 各定数の値は、下記のことを表わす。

        1. 定数が数字であるならば、固有文字集合内の文字の順序番号。この値は、固有文字集合内の文字の数を超えてはならない。

        2. 定数が文字であるならば、固有文字集合内の実際の文字。文字定数の値が複数の文字から構成される場合、その文字定数内の各文字に、左端の文字から開始して連続した昇順に、文字の照合順序が設定される。

      2. ALPHABET句内に定数が現れる順番によって、文字の照合順序の文字の順序番号を昇順に定める。

      3. 固有の文字の照合順序のうち、この定数句で書かれなかった文字は、書かれたどの文字よりも大きい順序位置に置かれる。書かれていない文字相互間の照合順序は、固有の文字の照合順序に従う。

      4. 文字符号系を指定する際に、固有の文字集合の中の定数-1句に指定されなかった各文字に関しては、作成者が指定する文字集合内の順序番号を定義する。

      5. THROUGH指定を書くと、固有文字集合の定数-1の値によって指定される文字から定数-2の値によって指定される文字までの一連の文字が、指定される文字の照合順序で昇順に連続した位置を割り当てられる。THROUGH指定を書く際には、一連の文字を昇順に指定しても降順に指定してもよい。

      6. ALSO指定を書くと、定数-1と定数-3の値によって指定される固有文字集合の文字は、文字の照合順序

        またはデータを表わすために使用される文字符号系の中で、

        同じ順序を割り当てられる。

  4. プログラムの文字の照合順序で順序位置が最大のものが、表意定数のHIGH-VALUEとなる。

    ただし、表意定数HIGH-VALUEを特殊名段落の中で定数として指定した場合を除く。

    プログラムの文字の照合順序で順序位置が最大のものが2つ以上ある場合は、最後に指定した方が表意定数のHIGH-VALUEとなる。

  5. プログラムの文字の照合順序で順序位置が最小のものが、表意定数のLOW-VALUEとなる。

    ただし、表意定数LOW-VALUEを特殊名段落の中で定数として指定した場合は例外である。

    プログラムの文字の照合順序で順序位置が最小のものが2つ以上ある場合は、最後に指定した方が表意定数のLOW-VALUEとなる。

  6. 浮動小数点数定数は、利用者が定義した文字の照合順序の中では使用できない。

  7. 特殊名段落の中で定数として指定した場合、表意定数のHIGH-VALUEとLOW-VALUEはそれぞれ、固有の文字の照合順序の中の順序位置が最大のものと最小のものとなる。

  8. SYMBOLIC CHARACTERS句は、表意定数のように使用できる利用者語を定義するために使用する。IN指定を指定しないと、記号文字-1は固有の文字集合の中で順序位置が整数-1によって指定される文字を表わす。IN指定を書くと、整数-1は符号系名-2によって指定される文字集合の中の文字の順序位置を表わす。

  9. 記号文字-1の内部表現は、固有の文字集合の中の該当する文字の内部表現となる。

  10. CURRENCY SIGN 句は、受取り側項目として使用されている数字編集項目中に置かれる通貨文字列の指定に使用され、この編集項目が数字または数字編集項目を受取り側とする送出し項目として使用されるときに、そこから逆編集される。さらに、基本形式のPICTURE句の文字列に、この通貨文字列の使用を指定するための記号を決定するためにも使用される。この記号は、通貨記号と呼ばれる。

    定数-6は、この通貨文字列の値を表す。

    CURRENCY SIGN 句が PICTURE SYMBOL指定とともに使用されている場合は、定数-7が通貨記号として使用される。

    CURRENCY SIGN 句がPICTURE SYMBOL指定を伴わずに使用されている場合は、 定数-6が通貨記号として使用される。

    通貨記号が小文字である場合は、その大文字として処理される。

    この句を指定しないと、COBOLの文字集合に定義されている通貨記号だけが、PICTURE句の中で使用できる。 詳細については、COBOL言語の概念の章の文字集合節を参照。

  11. DECIMAL POINT IS COMMA句は、PICTURE句の文字列と数字定数においてはコンマ(,)と終止符(.)の機能を逆転させることを意味する。

  12. NUMERIC SIGN句を指定すると、符号付き数字項目の符号の位置を個々に指定しなかった場合、末尾に独立の符号が付けられる。

  13. 呼び名を使用できるところでは、代わりに機能名を使用できる。

  14. 機能名に外部スイッチを指定しない場合、下記のものの中から選ぶことができる。

    TAB 縦のタブ位置へ飛ぶ(必要に応じて出力レコード中にASCII X"0B"を挿入) WRITE ADVANCING文
    PRINTER プリンタ DISPLAY文
    FORMFEED 改ページする(必要に応じて出力レコード中にASCII X"0C" を挿入) WRITE ADVANCING文
    COMMAND-LINE コマンド転送 ACCEPTおよびDISPLAY文
    ARGUMENT-NUMBER コマンド行の引数番号 ACCEPTおよびDISPLAY文
    ARGUMENT-VALUE コマンド行の引数値 ACCEPT文
    ENVIRONMENT-NAME 環境変数名 DISPLAY文
    ENVIRONMENT-VALUE 環境変数値 ACCEPTおよびDISPLAY文
    SYSERR 標準エラー装置 DISPLAY文

    このCOBOLシステムに組み込まれている OS/VS COBOL,VS COBOLIIおよびSAAにおいて使用できる機能名を下の表6-1に示す。

    >表6-1: 使用できる機能名
      OSVS VSC2 Rel (2) COBOL/370
    またはVSC2 Rel (3)/(4)
    SAA L1
    SYSIN y y y y
    SYSIPT U U y  
    SYSOUT y y y y
    SYSLIST     y  
    SYSLST U U y  
    SYSPCH U U y  
    SYSPUNCH U y y  
    CONSOLE y y y y
    C01 y y y y
    C02 y y y  
    C03 y y y  
    C04 y y y  
    C05 y y y  
    C06 y y y  
    C07 y y y  
    C08 y y y  
    C09 y y y  
    C10 y y y  
    C11 y y y  
    C12 y y y  
    S01 y y y  
    S02 y y y  
    S03   U y  
    S04   U y  
    S05   U y  
    CSP y y y y
    1 char rw literal y      
    AFP-5A     y  

    y メインフレームのコンパイラおよびCOBOLシステムに明記されており、受け付けられる。
    U 明記されていないが、メインフレームのコンパイラに受け付けられる。

  15. CLASS句は、指定した文字の組に名前を付ける働きをする。クラス名-1はクラス条件の中でだけ参照できる。クラス名-1には、この句に指定する定数の値によって表わされる文字の組だけが含まれる。各定数の値は下記の内容を表わす。

    1. 定数が数字の場合、固有の文字集合の中の文字の順序番号。 この値は、固有の文字集合の文字の数を表わす値を超えてはならない。

    2. 定数が文字の場合、固有の文字集合の中の実際の文字。 文字定数が複数の文字から構成される場合、その文字定数の各文字がクラス名-1によって表わされる文字の組に含まれる。

    THROUGH指定を書くと、固有文字集合における定数-4から定数-5までのすべての文字がクラス名-1によって表わされる文字の組に含まれる。THROUGH指定に書く一連の文字は、固有文字集合の中で昇順であっても降順であってもよい。

  16. 原始要素の特殊名段落の中に指定したすべての句は、その原始要素 に含まれる原始要素にも適用される。親の原始要素の特殊名段落の中に指定した条件名、英数字名、クラス名、通貨記号、英字名、および記号文字は、子となる原始要素いずれからも参照できる。

  17. CALL-CONVERSION句を使用すると、パラメータ受渡しに関して予め定義されているいくつかの方式の中から1つを選択できる。これによって、COBOL以外の言語で書かれ、パラメータ受渡し方式の異なる副プログラムを呼び出せる。

  18. CONSOLE IS CRT句を指定すると、ACCEPT文またはDISPLAY文のうち、作用対象が画面でなく特定の形式に固有の句を含まないものが、形式 5 として扱われるようになる。CONSOLE IS CRT句を指定しないと、それらの文は標準のANSI ACCEPT文またはDISPLAY文として扱われる。

  19. CURSOR IS句は、ACCEPT文によって使用され、カーソルの番地を保持するデータ項目を指定する。

    1. ACCEPT文の開始時に、データ名-1に画面上の文字位置として有効な値が入っていると、その文字位置がカーソルの初期位置として使用される。データ名-1に有効な値が入っていない場合は、データ名-1は無視されて、画面上の最初の入力項目の先頭がカーソルの初期位置となる。データ名-1に入っている文字位置をACCEPT文の中で使用すると、ACCEPT文の終了時にデータ名-1の値が更新される。その結果、ACCEPT文が終了した時点でのカーソルの位置がデータ名-1に入れられる。

    2. CURSOR IS句は、画面上の項目への位置付けには効力をもたない。

    3. データ名-1の長さは4文字または6文字とする。データ名-1の長さが4文字である場合、上2文字が行番号として解釈され、下2文字がカラム番号として解釈される。データ名-1の長さが6文字である場合、上3文字が行番号として解釈され、下3文字がカラム番号として解釈される。

    4. データ名-1に入っている値が有効でない(たとえば、ゼロや文字や画面の下辺から外れる値)場合は、この句は効力をもたない。

    5. データ名-1に含まれている値が有効な文字位置ではあるが、実行されようとしているACCEPT文の入力項目に対応しない場合、カーソルは次の入力項目に位置付けられる。このとき、次の入力項目が存在しないと、最初の入力項目に位置付けられる。入力項目の順番はデータ部にデータ記述を書いた順番である。

  20. CRT STATUS句は、形式 4 または形式 5 のACCEPT文が実行されるたびに、状態値が転記されるデータ項目を指定する。

    特殊名段落にCRT STATUS句を指定すると、形式 4 または形式 5 のACCEPT文が実行されるたびに(詳細については後述する)、その結果を示す値がデータ名-2に入れられる。データ名-2は状態キーから構成される。そのそれぞれに、ACCEPT文を実行した結果の状態が記録される。各状態キーの意味を以下に説明する。

CRT状態キー

状態キー1: データ名-1の最初のバイトは、CRT状態キー1である。このデータ記述には、PICTURE 9 USAGE DISPLAYと指定しておく。この状態キーはACCEPT操作の終了を引き起こした条件を表わす。このキーがとる具体的な値は下記のとおり。

"0" 終了キーまたは最後の項目の外に出る自動スキップを表わす
"1" 利用者が定義したファンクション・キーを表わす
"2" COBOLシステムで定義されているファンクション・キーを表わす
"9" エラーが発生したことを表わす

終了キーとは、ACCEPT操作を終わらせるためのキーである(たとえば、実行キー)。ACCEPTの最後の項目でフィールド・タブ・キーを押すと、終了キーとして働くように設定する構成オプションもある。ファンクション・キーを定義することも構成オプションである。

この状態値に"0" が返されて終了することを、正常終了という。

ACCEPT文の中にON EXCEPTION指定を書くと、CRT状態キーの値が" 0" 以外であった場合、指定した無条件命令が実行される。

CRT 状態キー2: データ名-1の2番目のバイトは、状態キー2である。ここには、ACCEPT操作を終了させた条件のさらに詳細を示すコードが記録される。状態キー2の形式と値はCRT状態キー1の値によって変わる。その具体的な値を下の表6-2に示す。

>表 6-2: CRT状態キー1と2の有効な組合せ
キー 1 キー 2 意味
形式
0 PIC 9 DISPLAY 0 操作員が終了キーを押した
0 PIC 9 DISPLAY 1 最後の項目の外に出る自動スキップ
1 PIC 99 COMP 0-127 ファンクション・キー番号
2 PIC 99 COMP 0-26 ファンクション・キー番号
9 PIC 99 COMP 0 画面内に項目が何もない

ファンクション・キー番号については、COBOLシステムのマニュアル中の画面処理およびユーザインターフェイスに関する記述を参照。

CRT 状態キー3: データ名-1の3番目のバイトは、状態キー3である。これはPICTURE 99 COMP-X または PICTURE 99 COMPとして定義する。 (NOIBMCOMP指令を指定して)。 CRT状態キー1とCRT状態キー2がともにゼロであるならば、ACCEPT操作を終わらせたキーそのままのキーボード・コードがCRT状態キー3に記録される。これ以外では、CRT状態キー3の内容はどうなるかわからない。

単一のキーではなく、いくつかのキーを連続して打つことによって1つの機能が実行されるように設定されている場合、最初に打たれたキーに対するコードだけが返される。