画面・帳票サポートシステム XMAP3 プログラミングガイド


11.1.1 画面表示命令(COBOL)

画面の入出力をするには,通信記述項を記載したあとで,SEND文,RECEIVE文,TRANSCEIVE文,およびDISABLE文を使用します。ここでは指定例を用いて画面の入出力を説明します。

〈この項の構成〉

(1) 通信記述項

画面の入出力に必要な情報をCOMMUNICATION SECTION中に指定します。

COMMUNICATION SECTION.
 *
      ┌……………………………………………………………………… 1
    ┌┴┐ 
  CD DSP FOR I-O WS ……………………………………………………… 2
   MAP NAME IS 画面マップ名 …………………………………………… 3
 
   SYMBOLIC TERMINAL    IS  画面端末名. …………………………… 4
   MAPPING MODE         IS  マッピングモード  …………………… 5
     [STATUS KEY        IS  画面-RC]  ……………………………… 6
     [DATA ABSENCE CODE IS  データ有無コード]  ………………… 7

1,2,3および5は必ず指定してください。ほかの項目は,必要に応じて指定してください。

例の説明
  1. 通信記述名(DSP)(必須)

    SEND文,RECEIVE文,およびTRANSCEIVE文で使用する名称です。

  2. 通信種別(I-O WS)(必須)

    ディスプレイ用であることを示します。

  3. 物理マップ名格納エリア(必須)

    SEND文,RECEIVE文,およびTRANSCEIVE文で出力,または入力したい場合に物理マップ名を格納するエリアです。格納するマップ名には,次に示すデバイスIDを付ける必要があります。

    ●GUI画面の場合

    マップ名6文字:ND

    マップ名7文字:O

    ●CUI画面の場合

    マップ名6文字:NC

    マップ名7文字:S

  4. 仮想端末名格納エリア

    最初のSEND文およびTRANSCEIVE文を実行する前に,仮想端末名を格納しておくエリアです。正しい名称を指定しないと,実行時に表示先が決定できなくなりエラーになります。スタンドアロンの場合は,標準の「DSP001」を指定します。C/Sシステムの場合は,C/Sセットアップで指定した仮想端末名を指定してください。

    AP中で仮想端末名を指定していない場合,仮想端末名の先頭1バイト目にスペースを指定している場合,または「SYMBOLIC TERMINAL IS」を省略している場合,環境変数「CBLTERMID」で指定された仮想端末名が仮定されます。環境変数「CBLTERMID」も指定されていない場合は,サーバ上に画面を表示します。

    また,環境変数「CBLTERM_xxx」を指定することで,出力先の仮想端末名を変更することもできます。

    CBLTERMID,CBLTERM_xxx については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

  5. マッピングオプション(必須)

    論理マップ,または物理マップのマッピング方式を指定します。画面を表示するときのオプションとして,ディスプレイ用に次に示すものが指定できます。

    目的

    MAPPING MODE句の指定値

    2回目または1回目でユーザデータを表示したいとき

    △,または0〈マージ〉

    同じ画面に対して一部上書をしたいとき

    2〈論理マップだけ〉

    ユーザデータなしで1回目(初期)表示したいとき

    3〈物理マップだけ〉

    詳細については,「3.2 マッピングオプション」を参照してください。

  6. リターンコード格納エリア

    SEND文,RECEIVE文,およびTRANSCEIVE文のリターンコードを格納するエリアです。SEND文,RECEIVE文,およびTRANSCEIVE文が正常に処理されたかを判定する場合,このエリアを参照します。STATUS KEY句のリターンコードの意味を次に示します。

    コード

    意味

    状態/要因/対処方法

    '00000'

    正常終了

    データの入出力が正常に終了した。

    '00008'

    論理エラー

    COBOLのAPに誤りがある。 APに誤りがないかを調べて修正する。

    '10004'

    '10008'

    マッピングエラー

    画面データのマッピング中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある

    '20008'

    入出力エラー

    画面データの入出力中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある

    注※

    画面入力時のリターンコードの内容については,マニュアル「XMAP3 実行ガイド」を参照してください。

    なお,これらのリターンコードはCOBOLのコンソール画面に表示されます。

  7. データ有無コード格納エリア

    データ有無コードを変更したい場合には,最初のSEND文を実行する前にデータ有無コードを格納しておく必要があります。「DATA ABSENCE CODE IS」を省略すると,データ有無コードとして標準の(1F)16が仮定されます。なお,データ有無コードはすべてのAPにかかわるコードなので,標準値を利用することをお勧めします。

(2) SEND文

ディスプレイに画面を表示します。画面表示時に変更したいデータは,出力論理マップへ格納したあとに実行します。

画面の送信から受信までの間にAPでほかの処理をする場合などに使用します。この場合,表示画面への入力操作を抑止するために,ドローの定義で,画面属性の「キーボードのロック状態を解除する」のチェックを外した画面を作成してください。

この画面を最初にSEND文で表示し,AP側の処理が終了して表示画面への入力操作ができるようになったとき,APからウィンドウ属性の「キーボードのロック状態を解除する」の修飾名を指定して,SEND/RECEIVE文(またはTRANSCEIVE文)を発行してください。

なお,二次ウィンドウ,または二次ウィンドウがある一次ウィンドウの場合の送受信には,SEND文を使用しないでTRANSCEIVE文を使用してください。

PROCEDURE DIVISION.
   :
 MOVE 'MAP003ND' TO 画面マップ名  … 1.マップ格納エリアにマップ名
                                       'MAP003ND'を格納
 SEND DSP                         … 2.通信記述名を指定(ディスプレイ用)
    FROM MAP003O                  … 3.出力用論理マップ名
    WITH EMI                      … 4.必ず指定すること

(3) RECEIVE文

ディスプレイ端末からの画面入力を行います。画面入力の結果は,入力論理マップに格納されます。SEND文と対で指定してください。

PROCEDURE DIVISION.
   :
 SEND DSP
  :
 RECEIVE DSP ……………………… 1.SEND文と同じ通信記述名を指定
     FIRST SEGMENT ……………… 2.必ず指定すること
     INTO MAP003I  ……………… 3.入力用論理マップ名

(4) TRANSCEIVE文

ディスプレイ端末での画面の入出力をまとめて行います。SEND文とRECEIVE文の機能を持ちます。通常の画面の送受信には,TRANSCEIVE文を使用してください。

PROCEDURE DIVISION.
   :
MOVE 'MAP003ND' TO 画面マップ名 …  1.マップ名格納エリアに物理マップ名
                                        'MAP003ND'を格納
 TRANSCEIVE DSP       …  2.通信記述名を指定(ディスプレイ用)
       FROM MAP003O   …  3.出力用論理マップ名を指定
       INTO MAP003I   …  4.入力用論理マップ名を指定

(5) DISABLE文

AP中の最初のSEND文または,TRANSCEIVE文が発行されたとき,ディスプレイをオープンし,プログラム終了までディスプレイを解放(クローズ)しません。ディスプレイを明示的に解放(クローズ)したい場合には,DISABLE文を使用します。

「例」のようにコーディングすると,次のオープン命令が発行された場合,ディスプレイ上に表示されているウィンドウは消え,新たにウィンドウが表示されます。

 PROCEDURE DIVISION.
   :
 SEND DSP
   :
 DISABLE DSP         … 1.通信記述名を指定(ディスプレイ用)