前ページへ 報告書作成 デバッグ 次ページへ

第2章: 通信機能単位の概要

 通信機能単位(communication module)は、通信文(message)またはその一部を呼び出し、処理し、生成する機能を提供する。この機能によって、通信管理システム(message control system)を通じて、ローカル(局所)およびリモート(遠隔地)の通信装置と通信することができる。

 この章でANS85と印されている機能は、COMS85指令の影響を受ける。(実行時に通信機能単位がどのようにサポートされるかの詳細については、『COBOLシステムリファレンス』を参照)

 標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、通信機能単位は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの機能単位を使用するべきではない。

2.1 通信機能単位におけるデータ部

2.1.1 通信節

 COBOLプログラムにおいては、通信記述項(communication description entry)が通信節(communication section)中で階層的に最も高い位置にある。通信節の見出しに続けて、通信記述項を書く。  この通信記述項は、レベル指示語のCD、通信記述名、一連の句からなる。入力通信記述項には、主待行列(queue)、副待行列(sub-queue)、受信日付け(message date)、受信時刻(message time)、文字数(text length)、状態キー(status key)、終了キー(end key)、通信文の個数(message count)などを指定する。出力通信記述項には、宛先の個数(destination count)、文字数、状態キー、誤りキー(error key)、宛先(destination)などを指定する。

 入出力通信記述項には、受信日付け、受信時刻、通信装置、文字数、終了キー、状態キーを指定する。

 通信記述項は終止符(.)で止める。通信記述項のレコード領域は、その後ろに利用者がレコード記述項を定義することによって、暗黙的に再定義される。

2.1.2 通信記述項の全体的な骨組み

 通信記述項は、通信管理システムとCOBOLシステムとの間のインタフェースを指定する。

一般形式

書き方1

書き方2

書き方3

構文規則

すべての書き方
  1. 通信記述項は、通信節にだけ書くことができる。 .
書き方1 と 3
  1. 単一のプログラム内では、INITIAL句は1つの通信記述項だけに指定できる。手続き部の見出しにUSING指定をしているプログラムの中で、INITIAL句を使用してはならない。(第3章「中核」の「3.6-1 手続き部の見出し」の節を参照)

  2. INITIAL句以外の選択句は、どんな順序で書いてもよい。

  3. この書き方の選択句をすべて省略した場合は、通信記述項の直後に01レベルのデータ記述項を書く。どの選択句の後に01レベルのデータ記述項を書いてもよい。

  4. 入力通信記述項の直後に書いたレコード記述項は、暗黙的に通信レコードを再定義することになる。このレコード記述項は、標準データ形式で数えて87文字ちょうどのレコードとして記述する。  通信レコードは、何回も再定義してかまわない。ただし、VALUE句を指定できるのは、最初の再定義だけである。通信管理システムは、暗黙の再定義に関係なく、つねに一般規則4の規則に従って通信レコードを参照する。

  5. データ名-1、データ名-2、……、データ名-11は、通信記述項内で一意とする。このようにデータ名を連続して書くとき、どのデータ名を予約語のFILLERとしてもよい。
書き方2
  1. 選択句はどんな順序で書いてもよい。

  2. この書き方の選択句をすべて省略した場合、通信記述項の直後に01レベルのデータ記述項を書く。

  3. 出力通信記述項の直後に書いたレコード記述項は、暗黙的に通信レコードを再定義することになる。通信レコードを何回も再定義してかまわない。ただし、VALUE句を指定できるのは、最初の再定義だけである。通信管理システムは、暗黙の再定義に関係なく、つねに一般規則18に従って通信レコードを参照する。

  4. データ名-1、データ名-2、……、データ名-5は、通信記述項内で一意とする。

  5. DESTINATION TABLE OCCURS句を指定しないと、ERRORキーとSYMBOLIC DESTINATIONがそれぞれ1つずつ確保される。この場合、それらのデータ項目を参照するときに、添字も指標も使用することはできない。

  6. DESTINATION TABLE OCCURS句を指定すると、データ名-4およびデータ名-5を参照するときには、添字付けまたは指標付けをしなければならない。

  7. データ名-1および整数-2のデータ項目の値に制限はない。
書き方3
  1. 入出力通信記述項の直後に書いたレコード記述項は、暗黙的に通信レコードを再定義することになる。このレコード記述項は、標準データ形式で数えて33文字ちょうどのレコードとして記述する。  通信レコードを何回も再定義してかまわない。ただし、VALUE句を指定できるのは、最初の再定義だけである。通信管理システムは、暗黙の再定義に関係なく、つねに一般規則26に従って通信レコードを参照する。

一般規則

すべての書き方
  1. 各文の実行が終了した時点で、書き方1のデータ名-10、書き方2のデータ名-3、

    書き方3のデータ名-6

    の状態キーが取る値を、表2-1に示す。表中の○は、その欄の文がその行の状態キーの値を取ることを示す。

    表2-1 通信文と状態キーの対応

    RECEIVE文
      SEND文
    (入出力用)
      SEND文(出力用)
      PURGE文
      ACCEPT MESSAGE COUNT文
      ENABLE INPUT文
      ENABLE INPUT/I-O TERMINAL文
      ENABLE OUTPUT文
      DISABLE INPUT文
      DISABLE INPUT/I-O TERMINAL文
      DISABLE OUTPUT文
      状態キーの値
    00 誤りは検出されない。動作は完了した。
                      10 1つ以上の宛先が切り離されている。動作は完了した。(一般規則2を参照)
                        10 宛先が切り離されている。動作しなかった。
              15 発信源または1つ以上の待行列か宛先が既に切り離されているか、または接続されている。(一般規則2を参照)
                20 1つ以上の宛先が未知である。既知な宛先に対しては、動作が完了した。(一般規則2を参照)
                  20 1つ以上の主待ち行列または副待ち行列が未知である。動作しなかった。
                    21 発信源が未知である。動作しなかった。
                  30 宛先個数が正しくない。動作しなかった。
              40 パスワードが正しくない。接続または切り離しの動作はしなかった。
                      50 文字数が一意名-1の大きさよりも多い。
                      60 送信を要求された部分の文字数がゼロであるかまたは一意名-1が抜けている。動作しなかった。
                        65 出力待ち行列の容量を超えた。(一般規則2を参照)
                        70 1つ以上の宛先で対象が存在しなかった。他の宛先への動作は完了した。
              80 10,15,20の状態キー条件のうち、2つ以上が発生した。(一般規則2を参照)
                          9x オペレーティングシステムによって定義される状態。
書き方1
  1. 入力通信記述項情報は、通信管理システムとプログラムとの間で処理される通信文に関する連絡用に使用される。この情報は、通信装置から通信文の一部として入ってくるわけではない。

  2. 各入力通信記述項に、標準データ形式で数えて87文字分のレコード領域が割り当てられる。このレコード領域は、通信管理システムに対して下記のように定義される。
    1. SYMBOLIC QUEUE句を書くと、データ名-1が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は入力レコード中の文字位置1-12を占める。

    2. SYMBOLIC SUB-QUEUE-1句を書くと、データ名-2が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置13-24を占める。

    3. SYMBOLIC SUB-QUEUE-2句を書くと、データ名-3が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置25-36を占める。

    4. SYMBOLIC SUB-QUEUE-3句を書くと、データ名-4が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置37-48を占める。

    5. MESSAGE DATE句を書くと、データ名-5が長さ6文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置49-54を占める。

    6. MESSAGE TIME句を書くと、データ名-6が長さ8文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置55-62を占める。

    7. SYMBOLIC SOURCE句を書くと、データ名-7が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置63-74を占める。

    8. TEXT LENGTH句を書くと、データ名-8が長さ4文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置75-78を占める。

    9. END KEY句を書くと、データ名-9が長さ1文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置79を占める。

    10. STATUS KEY句を書くと、データ名-10が長さ2文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置80-81を占める。

    11. MESSAGE COUNT句を書くと、データ名-11が長さ6文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置82-87を占める。

     もう1つ別の指定方法がある。データ名を連続して書くと、上記の順番に対応する句を指定したことになる。

     どちらの指定方法を採っても、下記のレコード記述を暗黙的に定義したことになる。見出し「注記」の下の情報は説明であって、記述の一部ではない。

              暗黙の記述                   注記
    
    01 データ名-0. 02 データ名-1 PIC X(12). SYMBOLIC QUEUE 02 データ名-2 PIC X(12). SYMBOLIC SUB-QUEUE-1 02 データ名-3 PIC X(12). SYMBOLIC SUB-QUEUE-2 02 データ名-4 PIC X(12). SYMBOLIC SUB-QUEUE-3 02 データ名-5 PIC 9(06). MESSAGE DATE 02 データ名-6 PIC 9(08). MESSAGE TIME 02 データ名-7 PIC X(12). SYMBOLIC SOURCE 02 データ名-8 PIC 9(04). TEXT LENGTH 02 データ名-9 PIC X. END KEY 02 データ名-10 PIC XX. STATUS KEY 02 データ名-11 PIC 9(06). MESSAGE COUNT

  3. 使用しないときのデータ名-2、データ名-3、データ名-4のデータ項目の内容は、空白にしておく。

  4. データ名-1のデータ項目には、主待ち行列の記号名を入れる。データ名-2、データ名-3、データ名-4のデータ項目には、副待ち行列の記号名を入れる。  これらの記号名はすべて、システム名の構成規則に従い、かつ、あらかじめ通信管理システムに対して定義済みでなければならない。

  5. RECEIVE文は、通信記述項中に指定された待ち行列から次の通信文またはその一部を順次引き取る。

     RECEIVE文の実行中に、どの待ち行列から通信文を取り出すかをより具体的に指定する必要があるときは、データ名-2、データ名-3、データ名-4のデータ項目の内容を使用する。待ち行列構造のあるレベルを指定したときは、それより上位のレベルも指定しなければならない。

     待ち行列を最下位のレベルまで詳しく指定しなかったときは、呼び出す次の通信文またはその一部は、通信管理システムによって決定される。

     RECEIVE文の実行が終了した時点では、データ名-1からデータ名-4のデータ項目には、待ち行列構造の記号名がすべてのレベルにわたって入れられている。

  6. 通信文の処理を行うプログラムが通信管理システムによって起動されると、そのプログラムは実行単位を確立する。そのとき、そのプログラムの実行を要求する基となった待ち行列構造の記号名が、INITIAL句を伴う通信記述項のデータ名-1からデータ名-4のデータ項目に入れられている。これ以外の場合には、それらのデータ項目には空白が入れられている。

     待ち行列データ項目に記号名または空白を入れる処理は手続き部の最初の文が実行される前に行われる。

     次いで、データ名-1からデータ名-4のデータ項目の内容をそのままにしてRECEIVE文を実行することによって、そのプログラムを実行するきっかけとなった実際の通信文を引き取ることができる。通信記述項の残りの項目は、そのときに更新される。

  7. INITIAL句のないプログラムを通信管理システムが起動しようとした場合、結果はどうなるかわからない。

  8. データ名-5の形式は、YYMMDD(年、月、日)である。これは、通信管理システムが、通信文の受信が完了したことを認識した日付を表わす。

     データ名-5のデータ項目の内容は、RECEIVE文の実行の一環として、通信管理システムによってだけ更新される。

  9. データ名-6の形式は、HHMMSSTT(時、分、秒、百分の一秒)である。これは、通信文の受信が完了したことを通信管理システムが認識した時刻を表わす。

     データ名-6のデータ項目の内容は、RECEIVE文の実行の一環として、通信管理システムによってだけ更新される。

  10. RECEIVE文の実行中に、通信管理システムは、その通信文を発信した通信装置の記号名をデータ名-7のデータ項目に入れる。この記号名は、システム名の構成規則に従っていなければならない。ただし、その通信装置の記号名が通信管理システム側でわかっていないときは、このデータ項目に空白を入れる。

  11. 通信管理システムは、RECEIVE文を実行した結果として受信された文字数を、データ名-8のデータ項目に入れる。(この章で後述する「2.3-5 RECEIVE文」の節を参照)

  12. データ名-9のデータ項目の内容は、RECEIVE文の実行の一環として、下記の規則に従って、通信管理システムによってだけ更新される。
    1. RECEIVE MESSAGE指定をしてあると、データ名-9は下記のどれかに設定される。
      • 通信群の終了が検出されていると、データ名-9の内容は3に設定される。

      • 通信文の終了が検出されていると、データ名-9の内容は2に設定される。

      • 通信文の部分終了が検出されていると、データ名-9の内容は0に設定される。

    2. RECEIVE SEGMENT指定をしてあると、データ名-9は下記のどれかに設定される。
      • 通信群の終了が検出されていると、データ名-9の内容は3に設定される。

      • 通信文の終了が検出されていると、データ名-9の内容は2に設定される。

      • 通信行の終了が検出されていると、データ名-9の内容は1に設定される。

      • 通信行の部分終了が検出されていると、データ名-9の内容は0に設定される。

    3. 上記の条件がいくつか同時に満たされる場合は、上記の順番に従って最初に該当した条件によって、データ名-9のデータ項目の内容が決定される。

  13. データ名-10のデータ項目の内容は、前に実行されたRECEIVE, ACCEPT MESSAGE COUNT, ENABLE INPUT, DISABLE INPUTの各文の状態条件を表わす。

     データ名-10のデータ項目の内容と状態条件との実際の関係は、表2-1を参照。

  14. データ名-11のデータ項目の内容は、主待ち行列、副待ち行列-1などにある通信文の数を表わす。このデータ項目の内容は、COUNT指定を伴うACCEPT文を実行する一環としてだけ、通信管理システムによって更新される。
書き方2
  1. 出力通信記述項の情報は通信装置に送られる性質のものではなく、処理する通信文に関して、プログラムと通信管理システムの間での連絡に使用されるものである。

  2. 各出力通信記述項に、標準データ形式で数えて(10 + 13 * 整数-2)の計算式で求められる文字数分の、連続するレコード領域が割り当てられる。このレコード領域は、通信管理システムに対して下記のように定義される。
    1. DESTINATION COUNT句を書くと、データ名-1が長さ4文字の符号なし整数データ項目の名前として定義される。このデータ項目は、このレコード中の文字位置1-4を占める。

    2. TEXT LENGTH句を書くと、データ名-2が長さ4文字の符号なし整数データ項目の名前として定義される。このデータ項目は、このレコード中の文字位置5-8を占める。

    3. STATUS KEY句を書くと、データ名-3が長さ2文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置9-10を占める。

    4. 文字位置11以降は表となる。この表は、下記の2つの要素から構成される。これらの要素の文字数の合計は、13文字である。

      • ERROR KEY句を書くと、データ名-4が長さ1文字の基本英数字データ項目の名前として定義される。

      • SYMBOLIC DESTINATION句を書くと、データ名-5が長さ12文字の基本英数字データ項目の名前として定義される。

    上記の句を書くと、下記のレコード記述を暗黙的に定義したことになる。見出し「注記」の下の情報は説明であって、記述の一部ではない。

             暗黙の記述                 注記
    
    01 データ名-0. 02 データ名-1 PIC 9(04). DESTINATION COUNT 02 データ名-2 PIC 9(04). TEXT LENGTH 02 データ名-3 PIC XX. STATUS KEY 02 データ名 OCCURS 整数-2 TIMES. DESTINATION TABLE 03 データ名-4 PIC X. ERROR KEY 03 データ名-5 PIC X(12). SYMBOLIC DESTINATION

  3. データ名-1のデータ項目の内容は、宛先の数を示す。この宛先の数は、SEND, ENABLE OUTPUT, DISABLE OUTPUTの各文を実行する際に、通信管理システムがデータ名-5のデータ項目の中から取り出す宛先の数として使用される。

     通信管理システムは、データ名-5のデータ項目の最初の出現番号のものを最初の宛先とし、次の出現番号のものを次の宛先とするといったように、データ名-1のデータ項目によって示される数の宛先を処理する。

     SEND, ENABLE OUTPUT, DISABLE OUTPUTの各文を実行している間に、データ名-1のデータ項目の値が整数-2を超えると、誤り条件が発生し、それらの文の実行は停止される。

  4. SEND, ENABLE OUTPUT, DISABLE OUTPUTの各文を実行するときに、データ名-1のデータ項目の値の妥当性を保証するのは、プログラマの責任である。

  5. SEND文を実行する一環として、通信管理システムはデータ名-2のデータ項目の内容を、送り出す通信文の文字数と解釈する。そして、SEND文に指定された一意名の領域の左端の文字からこの文字数に達するまでを順に送信する。(この章で後述する「2.3-6 SEND文」の節を参照)

  6. データ名-5のデータ項目の各反復要素には、通信管理システムに既知の宛先が入れられている。この宛先はシステム名の構成規則に従っていなければならない。

  7. データ名-3のデータ項目の内容は、前に実行されたSEND, ENABLE OUTPUT, DISABLE OUTPUTの各文の状態条件を表わす。

     データ名-3のデータ項目の内容と状態条件との実際の関係は、表2-1を参照。

  8. SEND, ENABLE OUTPUT, DISABLE OUTPUTの各文の実行中に、指定された宛先の中に通信管理システムにとって未知なものがあると、データ名-3のデータ項目の内容とデータ名-4のデータ項目のすべての反復要素が更新される。

     データ名-4のデータ項目の内容が1であるときは、対応するデータ名-5のデータ項目の値が通信管理システムにとって未知であることを示す。これ以外の場合は、データ名-4のデータ項目の内容はゼロに設定される。

  1. 表2-2は、各文の実行完了後のデータ名-4のデータ項目の内容を示す。"○" は対応する文で対応する値を取り得ることを示す。

    表2-2 誤りキーの値

    SEND文
      PURGE文
      ENABLE OUTPUT文
      DISABLE OUTPUT文
      誤りキーの値
    0 誤りは検出されない。
    1 宛先が未知である。
        2 宛先が切り離されている。
          4 参照する宛先の通信文の一部がない。
        5 宛先が既に接続されているかまたは切り離されている。
          6 出力待ち行列の容量を超えた。
            7-9 将来の予備。
    A-Z オペレーティングシステムによって定義される条件。
書き方3

  1. 入出力通信記述情報は、取り扱う通信文に関して、通信管理システムとプログラムとの間で交換される通信内容に係わるものである。この情報は、通信文の一部として端末から送られてくるものではない。

  2. 各入出力通信記述項に対して、連続する33文字分のレコード領域が割り当てられる。このレコード領域は、通信管理システムに対して、下記のように定義される。
    1. MESSAGE DATE句を書くと、データ名-1が長さ6文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置1-6を占める。

    2. MESSAGE TIME句を書くと、データ名-2が長さ8文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置7-14を占める。

    3. SYMBOLIC TERMINAL句を書くと、データ名-3が長さ12文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置15-26を占める。

    4. TEXT LENGTH句を書くと、データ名-4が長さ4文字の符号なし整数データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置27-30を占める。

    5. END KEY句を書くと、データ名-5が長さ1文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置31を占める。

    6. STATUS KEY句を書くと、データ名-6が長さ2文字の基本英数字データ項目の名前として定義される。このデータ項目は、入力レコード中の文字位置32-33を占める。

     もう1つ別の指定方法がある。データ名を連続して書くと、上記の順番に対応する句を指定したことになる。

     どちらの指定方法を採っても、下記のレコード記述を暗黙的に定義したことになる。  見出し「注記」の下の情報は説明であって、記述の一部ではない。

           暗黙の記述                         注記
    
    01 データ名-0. 02 データ名-1 PIC 9(6). MESSAGE DATE 02 データ名-2 PIC 9(8). MESSAGE TIME 02 データ名-3 PIC X(12). SYMBOLIC TERMINAL 02 データ名-4 PIC 9(4). TEXT LENGTH 02 データ名-5 PIC X. END KEY 02 データ名-6 PIC XX. STATUS KEY

  3. 通信文を処理するプログラムが通信管理システムによって起動されると、INITIAL句を伴う入出力通信記述項を参照する最初のRECEIVE文によって、プログラムを起動するきっかけとなった実際の通信文が返される。

  4. データ名-1の形式は、YYMMDD(年、月、日)である。これは、通信管理システムが、通信文の受信が完了したことを認識した日付を表わす。

     データ名-1のデータ項目の内容は、RECEIVE文の実行の一環として、通信管理システムによってだけ更新される。

  5. データ名-2の形式は、HHMMSSTT(時、分、秒、百分の一秒)である。これは、通信文の受信が完了したことを通信管理システムが認識した時刻を表わす。

    T データ名-2のデータ項目の内容は、RECEIVE文の実行の一環として、通信管理システムによってだけ更新される。

  6. 通信文の処理を行うプログラムが通信管理システムによって起動されると、そのプログラムは実行単位を確立する。このとき、そのプログラムの実行を要求する基となった通信端末の記号名が、INITIAL句を伴う入出力通信記述項のデータ名-3のデータ項目に入れられている。この記号名は、システム名の構成規則に従っていなければならない。

     それ以外の場合には、そのデータ項目には空白が入れられている。

     このデータ項目に記号名または空白を入れる処理は、手続き部の最初の文が実行される前に行われる。

  7. INITIAL句のないプログラムを通信管理システムが起動しようとした場合、結果はどうなるかわからない。

  8. 入出力通信記述項にINITIAL句を指定してある場合、通信管理システムによってプログラムが起動されたときに、データ名-3のデータ項目の内容は、そのプログラムによって変更されてはならない。データ名-3のデータ項目の内容が変更された場合、通信記述名-1を参照するどの文の実行も不成功に終わり、データ名-6のデータ項目に、状況に応じて、発信源または宛先が不明であることを示す値が設定される(一般規則1.を参照)。

  9. INITIAL句を伴わない入出力通信記述項またはINITIAL句を伴う入出力通信記述項で、プログラムが通信管理システムによって起動されたのではない場合、通信記述名-1を参照する最初の文は、プログラムの中でデータ名-3に発信源または宛先を設定してからでなければ実行してはならない。

     通信記述名-1を参照する文を最初に実行した後では、データ名-3のデータ項目の内容をそのプログラムの中で変更してはならない。データ名-3のデータ項目の内容が変更された場合、通信記述名-1を参照するどの文の実行も不成功に終わり、データ名-6のデータ項目に、状況に応じて、発信源または宛先が不明であることを示す値が設定される(一般規則1.を参照)。

  10. 通信管理システムは、RECEIVE文を実行した結果として受信された文字数を、データ名-4のデータ項目に入れる。(この章で後述する「2.3-5 RECEIVE文」の節を参照)

     SEND文を実行する一環として、通信管理システムは、データ名-4のデータ項目の内容を、送り出す通信文の文字数と解釈する。そして、SEND文に指定された一意名の領域の左端の文字からこの文字数に達するまでを、順に送信する。(この章で後述する「2.3-6 SEND文」の節を参照)

  11. データ名-5のデータ項目の内容は、RECEIVE文の実行の一環として、下記の規則に従って、通信管理システムによってだけ更新される。
    1. RECEIVE MESSAGE指定をしてあると、データ名-5は下記のどれかに設定される。

      • 通信群の終了が検出されていると、データ名-5の内容は3に設定される。

      • 通信文の終了が検出されていると、データ名-5の内容は2に設定される。

      • 通信文の部分終了が検出されていると、データ名-5の内容は0に設定される。

    2. RECEIVE SEGMENT指定をしてあると、データ名-5は下記のどれかに設定される。

      • 通信群の終了が検出されていると、データ名-5の内容は3に設定される。

      • 通信文の終了が検出されていると、データ名-5の内容は2に設定される。

      • 通信行の終了が検出されていると、データ名-5の内容は1に設定される。

      • 通信行の部分終了が検出されていると、データ名-5の内容は0に設定される。

    3. 上記の条件がいくつか同時に満たされる場合は、上記の順番に従って最初に該当した条件によって、データ名-5のデータ項目の内容が決定される。

  12. データ名-6のデータ項目の内容は、前に実行されたDISABLE, ENABLE, PURGE, RECEIVE, SENDの各文の状態条件を表わす。

     データ名-6のデータ項目の内容と状態条件との実際の関係は、一般規則1.に示した。

2.2 通信機能単位における手続き部

2.2.1 ACCEPT MESSAGE COUNT(通信文個数の入力)文

 ACCEPT MESSAGE COUNT(通信文個数の入力)文は、待ち行列中の通信文の個数を入手する。

一般形式

構文規則

  1.  通信記述名は、入力通信記述項を参照しなければならない。

一般規則

  1. TACCEPT MESSAGE COUNT文は、通信記述名用に指定されているMESSAGE COUNTフィールドを、主待ち行列や副待ち行列-1などの中に存在する通信文の個数を反映するように更新する。

  2. ACCEPT MESSAGE COUNT文を実行するときには、通信記述項の各項目のうち、最低限、通信文の個数を調べる対象の主待ち行列の名前が設定されていること。この文が実行されると、データ名-10のデータ項目(STATUS KEY)とデータ名-11のデータ項目(MESSAGE COUNT)が適宜更新される。(この章で前述した「2.2-2 通信記述項の全体的な骨組み 」を参照)

2.2.2 DISABLE(切離し)文

 DISABLE(切離し)文は、指定された出力待ち行列と出力宛先との間または指定された入力源と入力待ち行列との間の、データの転送を停止するよう、通信管理システムに通知する。

 DISABLE文のKEY指定は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に削除される予定である。

 この構文は、Micro Focus COBOLに組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。

一般形式

構文規則

  1. INPUT指定をしたときは、通信記述名は入力通信記述項を参照すること。

  2. I-O TERMINAL指定をしたときは、通信記述名は入出力通信記述項を参照すること。

  3. OUTPUT指定をしたときは、通信記述名は出力通信記述項を参照すること。

  4. 定数-1または一意名-1のデータ項目の内容は、英数字と定義されていること。

一般規則

  1. DISABLE文は、通信管理システムと指定された発信源または宛先との間を、論理的に切り離す。既に論理的な切り離しが行われている場合、またはプログラムの外部で論理的な切り離しが行われる場合、そのプログラム内ではDISABLE文は必要ない。  COBOLプログラムと通信管理システムとの間のデータ転送のための論理経路は、DISABLE文の影響を受けない。

  2. INPUT指定に補助語のTERMINALを付けると、発信源とすべての主待ち行列および副待ち行列との間の論理経路が閉鎖される。すると、通信記述項の項目のうちデータ名-7のデータ項目(SYMBOLIC SOURCE)の内容だけが意味を持つ。

  3. INPUT指定に補助語のTERMINALを付けないと、通信記述項の項目のうちデータ名-1(SYMBOLIC QUEUE)からデータ名-4(SYMBOLIC SUB-QUEUE-3)までの主待ち行列、および副待ち行列に関連するすべての発信源との論理経路が閉鎖される。

  4. I-O TERMINAL指定をすると、発信源(データ名-3のデータ項目(SYMBOLIC TERMINAL)の内容によって定義される)とプログラムとの間の論理経路が閉鎖される。

  5. OUTPUT指定をすると、通信記述項の項目のうちデータ名-5のデータ項目(SYMBOLIC DESTINATION)の内容によって定義される、すべての宛先との論理経路が閉鎖される。

  6. 定数-1または一意名-1のデータ項目の内容はシステムに組み込まれているパスワードと照合される。両者が一致した場合にだけ、DISABLE文は受け付けられる。両者が一致しないと、通信記述項の項目のうちのSTATUS KEYの値が更新される。

     通信管理システムは、1文字以上10文字以内のパスワードを取り扱えなければならない。

  7. 通信管理システムは、発信源または宛先がアクティブでない最も早い段階でDISABLE文を実行するように保証する。しかし、DISABLE文を実行することによって、端末との間で送信または受信中の通信文の残りの部分が送られなくなることはない。

2.2.3 ENABLE(接続)文

 ENABLE文のKEY指定は、ANS '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に削除される予定である。

 ENABLE(接続)文は、指定された出力待ち行列と出力宛先との間、または指定された入力源と入力待ち行列との間のデータの転送を可能にするよう、通信管理システムに通知する。

 この構文は、Micro Focus COBOLに組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。(詳細については、『COBOLシステムリファレンス』を参照)

一般形式

構文規則

  1. INPUT指定をしたときは、通信記述名は入力通信記述項を参照すること。

    I-O TERMINAL指定をしたときは、通信記述名は入出力通信記述項を参照すること。

  2. OUTPUT指定をしたときは、通信記述名は出力通信記述項を参照すること。

  3. 定数-1または一意名-1のデータ項目の内容は英数字と定義されていること。

一般規則

  1. ENABLE文は、通信管理システムと指定された発信源または宛先との間を、論理的に接続する。既に論理的な接続が行われている場合、またはプログラムの外部で論理的な接続が行われる場合、そのプログラム内ではENABLE文は必要ない。COBOLプログラムと通信管理システムとの間のデータ転送のための論理経路は、ENABLE文の影響を受けない。

  2. INPUT指定に補助語のTERMINALを付けると、発信源とすべての主待ち行列および副待ち行列との間の論理経路のうちで既に接続されているものが開通される。こうすると、通信記述項の項目のうちデータ名-7のデータ項目(SYMBOLIC SOURCE)の内容だけが、通信管理システムに対して意味を持つ。

  3. INPUT指定に補助語のTERMINALを付けないと、通信記述項の項目のうちデータ名-1(SYMBOLIC QUEUE)からデータ名-4(SYMBOLIC SUB-QUEUE-3)までの主待ち行列、および副待ち行列に関連するすべての発信源との論理経路が開通される。

  4. I-O TERMINAL指定をすると、発信源(データ名-3のデータ項目(SYMBOLIC TERMINAL)の内容によって定義される)とプログラムとの間の論理経路が開通される。

  5. OUTPUT指定をすると、通信記述項の項目のうちデータ名-5のデータ項目(SYMBOLIC DESTINATION)の内容によって定義される、すべての宛先との論理経路が開通される。

  6. 定数-1または一意名-1のデータ項目の内容は、システムに組み込まれているパスワードと照合される。両者が一致した場合にだけ、ENABLE文は受け付けられる。両者が一致しないと、通信記述項の項目のうちのSTATUS KEYの値が更新される。

    通信管理システムは、1文字以上10文字以内のパスワードを取り扱えなければならない。

2.2.4 PURGE(取消し)文

 PURGE(取消し)文は、いくつかのSEND文によって引き渡された部分的な通信文を通信管理システムから除去する。

一般形式

構文規則

  1.  通信記述名は、出力通信記述項または入力通信記述項を参照しなければならない。

一般規則

  1. PURGE文を実行すると、通信記述名の通信記述項中に指定されている宛先への伝送待ちの部分的な通信文が、通信管理システムによって除去される。

  2. EMIまたはEGIに関連する通信文は、いずれもPURGE文の実行によって影響されることはない。

  3. 通信記述名-1によって参照され領域の状態キー・データ項目の内容および誤りキー・データ項目の内容は、(該当すれば)通信管理システムによって更新される。(この章で前述した「2.2-2 通信記述項の全体的な骨組み」を参照)

2.2.5 RECEIVE(受信)文

 RECEIVE(受信)文は、通信文、通信行、通信文または通信行の一部、およびそれらのデータに関する情報を、通信管理システムによって保持されている待ち行列からCOBOLプログラムに引き渡す。該当するデータが何もないときは、無条件文を実行することができる。

一般形式

構文規則

  1.  通信記述名は、入力通信記述項 または入出力通信記述項 を参照しなければならない。

一般規則

  1. 通信記述名が入力通信記述項を参照する場合、その中のデータ名-1(SYMBOLIC QUEUE)からデータ名-4(SYMBOLIC SUB-QUEUE-3)までのデータ項目の内容は、通信文を収録している待ち行列の構造を表わす。(この章で前述した「2.2-2 通信記述項の全体的な骨組みn」を参照)

  2. 通信記述名が入出力通信記述項を参照する場合、その中のデータ名-3(SYMBOLIC TERMINAL)のデータ項目の内容は、通信文の発信源を表わす。

  3. 通信文、通信行、通信文または通信行の一部は、一意名-1の領域の受信文字位置に送られる。送られたデータは左詰めにされる。後部に空白は埋められない。

  4. RECEIVE文を実行した結果、利用可能なデータが通信管理システムによって一意名-1のデータ項目に収められた場合は、NO DATAが指定されていても無視される。そして、WITH DATAが指定されていなければ、制御はRECEIVE文の末尾に移される。

    WITH DATAが指定されていれば、制御は無条件文-2に移される。制御が無条件文-2に移された場合、その中に記述されている個々の文に関する規則に従って、プログラムの実行が続けられる。このとき、明示的に制御を移転させる手続きの分岐または条件文が出てきた場合は、その文の規則に従って制御が移される。そうでない場合は、無条件文-2の実行が終了すると、制御はRECEIVE文の末尾に移される。

  5. RECEIVE文を実行した結果、利用可能なデータが通信管理システムによって一意名-1のデータ項目に収められなかった場合は、下記の3つの処理のうちのどれかが行われる。どのような条件のときにデータが利用可能ではないかは、作成者が定義する。

    1. RECEIVE文中にNO DATAが指定されている場合、制御は無条件文-1に移される。この場合、無条件文-1の中に記述されている個々の文に関する規則に従って、プログラムの実行が続けられる。このとき、明示的に制御を移転させる手続きの分岐または条件文が出てきた場合は、その文の規則に従って制御が移される。そうでない場合は、無条件文-1の実行が終了すると、制御はRECEIVE文の末尾に移される。

      WITH DATAは、指定されていても無視される。

    2. RECEIVE文中にNO DATA指定がなされていない場合、一意名-1のデータ項目中に利用可能なデータが収められるまで、実行用プログラムの処理は中断される。

    3. いくつかの主待ち行列

      または副待ち行列

      が通信管理システムにとって未知であると、適切な状態コードが設定され、次いでデータが利用可能になった場合と同様に制御が移される。

  6. RECEIVE文が実行されるたびに、通信記述名の通信記述項に含まれるデータ項目が、通信管理システムによって適切に更新される。

  7. RECEIVE文を1回実行することによって、一意名-1のデータ項目に、2件以上の通信文(MESSAGE指定をした場合)または2件以上の通信行(SEGMENT指定をした場合)が返されることは決してない。しかし、入力待ち行列中で通信文全体が利用可能になるまで、通信管理システムが実行用プログラムに通信文の一部を引き渡すことはない。このことは、RECEIVE文にSEGMENT指定をした場合でも当てはまる。

  8. MESSAGE指定をした場合、通信行の終了記号は無視されて、下記の規則に従ってデータが転送される。

    1. 通信文の大きさが一意名-1の領域の大きさと等しいと、その通信文はその領域に格納される。

    2. 通信文の大きさが一意名-1の領域の大きさよりも小さいと、その通信文はその領域に左詰めで格納される。後ろに空白は埋められない。

    3. 通信文の大きさが一意名-1の領域の大きさよりも大きいと、その通信文は左端からその領域にいっぱいになるまで左詰めで格納される。その通信文の残りの部分は、同じ主待ち行列および副待ち行列を指定してRECEIVE文を繰り返し実行することによって、一意名-1の領域に転送することができる。  上記の8a, 8b, 8cの規則を適用するに際しては、通信文の残りの部分は新しい通信文と同様に扱われる。

  9. SEGMENT指定をした場合、下記の規則に従ってデータが転送される。

    1. 通信行の大きさが一意名-1の領域の大きさと等しいと、その通信行はその領域に格納される。

    2. 通信行の大きさが一意名-1の領域の大きさよりも小さいと、その通信行はその領域に左詰めで格納される。後ろに空白は埋められない。

    3. 通信行の大きさが一意名-1の領域の大きさよりも大きいと、その通信行は左端からその領域にいっぱいになるまで左詰めで格納される。その通信行の残りの部分は、同じ主待ち行列および副待ち行列を指定してRECEIVE文を繰り返し実行することによって、一意名-1の領域に転送することができる。  上記の9a, 9b, 9cの規則を適用するに際しては、通信行の残りの部分は新しい通信行と同様に扱われる。

    4. RECEIVE文によって呼び出されるテキスト中に通信文の終了記号または通信群の終了記号があると、暗黙の通信行の終了記号があるものと解釈されて、そのテキストは通信行として扱われる。

  10. RECEIVE文の実行によって一度通信文の一部が引き渡されると、その実行単位内で残りの部分を受け取るには、引続きRECEIVE文を実行しなければならない。

  11. END-RECEIVE指定は、RECEIVE文の範囲を区切る。(第2章「COBOLの概念」の2.9-2中「範囲明示文」の節を参照)

2.2.6 SEND(送信)文

 SEND(送信)文は、通信文、通信行、通信文または通信行の一部を、通信管理システムによって保持されているいくつかの出力待ち行列へ引き渡す。

一般形式

書き方1

書き方2

構文規則

  1. 通信記述名は、出力通信記述項

    または入出力通信記述項 を参照すること。

  2. 一意名-2は、演算符号の付かない1文字の整数とする。

  3. ADVANCING指定の中で使用するときは、一意名-3は基本整数項目の名前とする。

  4. W呼び名を指定すると、その名前は特別の機能を持つものとして、識別される。呼び名は、環境部の特殊名段落に定義されている。

  5. 整数または一意名-3のデータ項目の値は、ゼロであってもよい。

  6. 一意名-1が関数一意名であるときは、英数字関数を参照しなければならない。

一般規則

すべての書き方
  1. 受信側の通信装置の行の長さが固定の場合(プリンタ、表示画面、カード・パンチなど)

    1. 各通信文または通信行は、物理行の左端の文字位置から開始される。

    2. 物理行の長さよりも短い通信文または通信行は、右側に空白を埋められる。

    3. 物理行の長さを超える通信文または通信行が切り捨てられることはない。送信テキストは、物理行と等しい長さにパックされてから受信装置に送られる。物理行を超えるテキストは、次の行に継続して送られる。

  2. 受信側の通信装置の行の長さが可変の場合(紙テープ・パンチ、他のコンピュータなど)、各通信文または通信行は、通信装置の次の利用可能な文字位置から開始される。

  3. SEND文を実行する一環として、通信管理システムは通信記述名の領域中のデータ名-2のデータ項目(TEXT LENGTH)の内容を、送り出す通信文の文字数と解釈する。そして、SEND文に指定された一意名の領域の左端の文字からこの文字数に達するまでを、順に送信する。

     データ名-2のデータ項目(TEXT LENGTH)の内容がゼロである場合、一意名-1のデータ項目の内容は送信されない。

     データ名-2のデータ項目(TEXT LENGTH)の長さがゼロから一意名-1のデータ項目の長さのまで範囲を超える場合、データ名-3のデータ項目(STATUS KEY)に誤りの理由を示す値が設定され、データは送信されない。(状態については、表2-1を参照)

  4. SEND文を実行する一環として、通信記述名の領域中のデータ名-3のデータ項目(STATUS KEY)の内容は、通信管理システムによって更新される。(この章で前述した「2.2-2 通信記述項の全体的な骨組み」を参照)

  5. 一意名-1のデータ項目の内容に特殊な制御文字が含まれている場合、結果はどうなるかわからない。

  6. 書き方1のSEND文を1回実行すると、通信文または通信行の一つの部分だけが通信管理システムに引き渡される。

     書き方2のSEND文を1回実行することによって、一意名-2のデータ項目の内容、または ESI, EMI, EGIによって指定される2件以上の通信文または2件以上の通信行が引き渡されることは決してない。

     しかし、通信文全体が出力待ち行列中に入り切るまでは、通信管理システムは通信文のどの部分も通信装置に送ることはない。

  7. 実行単位の実行中に、EMIまたはEGIによって末尾を区切られていないか、

    またはPURGE文を実行することによって除去されていない

    通信文の一部は、どう処置されるかわからない。しかし、その通信文は論理的には存在しないため、宛先に送ることはできない。

  8. SEND文の実行によって一度通信文の一部が通信管理システムに引き渡されると、その実行単位内で残りの部分を引き渡すには、引続きSEND文を実行しなければならない。
書き方2
  1. 一意名-2のデータ項目の内容は、一意名-1のデータ項目の内容に終了記号を付けることを指定する。この終了記号には、通信行の終わりを示すものと、通信文の終わりを示すものと、伝送の終わりを示すものとがある。詳細については、下の表にまとめる。

    一意名-2の データ項目の内容 一意名-1のデータ項目に 付け加えられるもの 意 味
    "0" インディケータなし インディケータなし
    "1" 通信行終了記号(ESI) 通信行の終わり
    "2" 通信文終了記号(EMI) 通信文の終わり
    "3" 通信群終了記号(EGI) 通信群の終わり
     "1","2","3"以外の文字は"0"として解釈される
     一意名-2のデータ項目の内容が"1"でも"2"でも"3"でもなく、一意名-1が指定されていないと、データ名-3のデータ項目(STATUS KEY)に誤りの原因を示す値が設定され、データは送られない。

  2. ESIは、通信行の終わりを通信管理システムに知らせる。

    EMIは、通信文の終わりを通信管理システムに知らせる。

    EGIは、通信群の終わりを通信管理システムに知らせる。通信管理システムがEGIをどう解釈するかは、ランタイムシステムによって指定される。  通信管理システムはこれらの終了記号を認識して、通信群、通信文、通信行を制御するために必要な措置をとる。

  3. これらの終了記号は、EGI, EMI, ESIの順に階層を構成している。 EGIの前には必ずしもESIやEMIがある必要はない。EMIの前には必ずしもESIがある必要はない。

  4. ADVANCING指定をすると、縦方向の位置決めができる通信装置上で、各通信文または通信行の縦方向の位置付けを制御できる。  縦方向の位置決めができない通信装置に関しては、通信管理システムは明示的または暗黙的に指定された縦方向の位置付けを無視する。

  5. 指定した一意名-2のデータ項目の内容がゼロである場合、ADVANCING指定

    およびREPLACING指定 をしたとしても、通信管理システムによって無視される。

  6. 縦方向の位置付けができる装置に対してADVANCING指定をしなかった場合、AFTER ADVANCING 1 LINEを指定したものと、自動的に想定される。

  7. 縦方向の位置付けができる装置に対して明示的または暗黙的にADVANCING指定をした場合、下記の規則が適用される。

    1. 一意名-3または整数を指定すると、その値と等しい行数、通信装置に送られるテキストの前または後で改行される。(下記のd.およびe.を参照)

    2. 一意名-3のデータ項目の値が負であると、結果はどうなるかわからない。

    3. 呼び名を指定すると、通信装置に送られたテキストは、該当する通信装置用に定義されている規則に従って位置付けられる。

    4. BEFORE指定をすると、上記の一般規則15a.

      および15b.

      に従って縦方向の位置付けが行われる前に、通信文または通信行が通信装置上に表示される。

    5. AFTER指定をすると、上記の一般規則15a.

      および15b.

      に従って縦方向の位置付けが行われた後で、通信文または通信行が通信装置上に表示される。

    6. PAGE指定をすると、通信装置に送られたテキストは、装置が次のページに位置付けられる前または後(BEFOREとAFTERのどちらを指定したかによる)に表示される。  改ページ機能のない装置にPAGE指定をすると、ADVANCING 1 LINEを指定したものと想定される(BEFOREかAFTERかは、その指定による)。

  8. 同じ位置に2つ以上の文字を表示できる文字・画像通信装置上で、後から送られた文字を既に送られている文字に重ねるか置き換えるかについては、下記の規則を適用する。

    1. REPLACING指定をすると、SEND文によって送信された文字はすべて、同じ行に既に送信されている文字があれば、その行の左端から開始して上書きされる。

    2. REPLACING指定をしないと、SEND文によって送信された文字はすべて、同じ行に既に送信されている文字があれば、その行の左端から開始して重ね合わされる。

  9. 受信側の通信装置が文字の置き換えられない種類のものである場合は、REPLACING指定の有無にかかわらず、SEND文によって送信された文字はすべて、同じ行に既に送信されている文字があればその行の左端から開始して重ね合わされる。

  10. 受信側の通信装置が2つ以上の文字を重ね合わすことのできない種類のものである場合は、REPLACING指定の有無にかかわらず、SEND文によって送信された文字はすべて、同じ行に前に送信されている文字があれば、その行の左端から開始して上書きされる。

Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標および名称は、国際法で保護されています。

前ページへ 報告書作成 デバッグ 次ページへ