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

[目次][用語][索引][前へ][次へ]

7.2.3 画面表示命令(COBOL)

スタンドアロン環境,およびC/Sシステム環境下では,次に示す方法でAPからPCに対して,画面の入出力ができます。

  1. 日立COBOLのSEND文,RECEIVE文,およびTRANSCEIVE文による方法
  2. COBOLのCALL文による方法
<この項の構成>
(1) SEND文,RECEIVE文,およびTRANSCEIVE文による方法

(1) SEND文,RECEIVE文,およびTRANSCEIVE文による方法

日立COBOLのSEND文,RECEIVE文,およびTRANSCEIVE文によって画面の入出力をする方法について指定例を使用して説明します。

詳細については,マニュアル「COBOL2002 言語 拡張仕様編」またはマニュアル「COBOL85 言語」を参照してください。

(a) 通信記述項

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

(例)
[図データ]

注 
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文を実行する前に,仮想端末名を格納しておくエリアです。正しい名称を指定しないと,実行時に表示先が決定できなくなりエラーになります。スタンドアロンの場合は,標準の「DSP001」を指定します。C/Sシステムの場合は,C/Sセットアップで指定した仮想端末名を指定してください。
    AP中で仮想端末名を指定していない場合,仮想端末名の先頭1バイト目にスペースを指定している場合,または「SYMBOLIC TERMINAL IS」を省略している場合,環境変数「CBLTERMID」で指定された仮想端末名が仮定されます。環境変数「CBLTERMID」も指定されていない場合は,サーバPC上に画面を表示します。
    また,環境変数「CBLTERM_xxx」を指定することで,出力先の仮想端末名を変更することもできます。
    CBLTERMID,CBLTERM_xxx の詳細については,マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL85 ユーザーズガイド」を参照してください。
  5. マッピングオプション(必須)
    論理マップ,または物理マップのマッピング方式を指定します。詳細については,「7.2.3(1)(f) MAPPING MODE句の扱い(マッピングオプション)」および「1.5.3(1) マッピングオプション」を参照してください。
  6. リターンコード格納エリア
    SEND文,RECEIVE文,およびTRANSCEIVE文のリターンコードを格納するエリアです。SEND文,RECEIVE文,およびTRANSCEIVE文が正常に処理されたかを判定する場合,このエリアを参照します。詳細については,「7.2.3(1)(g) STATUS KEY句のリターンコード」を参照してください。
  7. データ有無コード格納エリア
    データ有無コードを変更したい場合には,最初のSEND文を実行する前にデータ有無コードを格納しておく必要があります。「DATA ABSENCE CODE IS」を省略すると,データ有無コードとして標準の(1F)16が仮定されます。なお,データ有無コードはすべてのAPにかかわるコードのため,できるだけ標準値を利用することをお勧めします。
(b) SEND文

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

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

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

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

(例)
[図データ]
(c) RECEIVE文

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

(例)
[図データ]
(d) TRANSCEIVE文

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

(例)
[図データ]
(e) DISABLE文

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

画面表示をしていないときは,ディスプレイ端末を解放し,ほかのプログラムを表示できるようにしたい場合はDISABLE文を使用します。

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

(例)
[図データ]
(f) MAPPING MODE句の扱い(マッピングオプション

通信記述項のMAPPING MODE句には,画面を表示するときのオプションとしてディスプレイ用に次に示すものが指定できます。なお,指定値(「マージ」「論理マップだけ」「物理マップだけ」)の詳細については「1.5.3(1) マッピングオプション」を参照してください。

目的 MAPPING MODE句の指定値
2回目または1回目でユーザデータを表示したいとき △,または0〈マージ〉
同じ画面に対して一部上書をしたいとき 2〈論理マップだけ〉
ユーザデータなしで1回目(初期)表示用 3〈物理マップだけ〉
(g) STATUS KEY句のリターンコード

STATUS KEY句のリターンコードの意味を次に示します。

コード 意味 状態/要因/対処方法
'00000' 正常終了 データの入出力が正常に終了した。
'00008' 論理エラー COBOLのAPに誤りがある。 APに誤りがないかを調べて修正する。
'10004'
'10008'
マッピングエラー 画面データのマッピング中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある
'20008' 入出力エラー 画面データの入出力中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある

注※
画面入力時のリターンコードの内容については,実行時のトラブル対処方法のヘルプを参照してください。

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