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は必ず指定してください。ほかの項目は,必要に応じて指定してください。
- 例の説明
-
-
SEND文,RECEIVE文,およびTRANSCEIVE文で使用する名称です。
-
ディスプレイ用であることを示します。
-
SEND文,RECEIVE文,およびTRANSCEIVE文で出力,または入力したい場合に物理マップ名を格納するエリアです。格納するマップ名には,次に示すデバイスIDを付ける必要があります。
●GUI画面の場合
マップ名6文字:ND
マップ名7文字:O
●CUI画面の場合
マップ名6文字:NC
マップ名7文字:S
-
最初のSEND文およびTRANSCEIVE文を実行する前に,仮想端末名を格納しておくエリアです。正しい名称を指定しないと,実行時に表示先が決定できなくなりエラーになります。スタンドアロンの場合は,標準の「DSP001」を指定します。C/Sシステムの場合は,C/Sセットアップで指定した仮想端末名を指定してください。
AP中で仮想端末名を指定していない場合,仮想端末名の先頭1バイト目にスペースを指定している場合,または「SYMBOLIC TERMINAL IS」を省略している場合,環境変数「CBLTERMID」で指定された仮想端末名が仮定されます。環境変数「CBLTERMID」も指定されていない場合は,サーバ上に画面を表示します。
また,環境変数「CBLTERM_xxx」を指定することで,出力先の仮想端末名を変更することもできます。
CBLTERMID,CBLTERM_xxx については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。
-
論理マップ,または物理マップのマッピング方式を指定します。画面を表示するときのオプションとして,ディスプレイ用に次に示すものが指定できます。
目的
MAPPING MODE句の指定値
2回目または1回目でユーザデータを表示したいとき
△,または0〈マージ〉
同じ画面に対して一部上書をしたいとき
2〈論理マップだけ〉
ユーザデータなしで1回目(初期)表示したいとき
3〈物理マップだけ〉
詳細については,「3.2 マッピングオプション」を参照してください。
-
SEND文,RECEIVE文,およびTRANSCEIVE文のリターンコードを格納するエリアです。SEND文,RECEIVE文,およびTRANSCEIVE文が正常に処理されたかを判定する場合,このエリアを参照します。STATUS KEY句のリターンコードの意味を次に示します。
コード
意味
状態/要因/対処方法
'00000'
正常終了
データの入出力が正常に終了した。
'00008'
論理エラー
COBOLのAPに誤りがある。 APに誤りがないかを調べて修正する。
'10004'
'10008'
マッピングエラー
画面データのマッピング中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある※。
'20008'
入出力エラー
画面データの入出力中にエラーが発生した。STATUS KEY句の指定がない場合,実行を中止する。 STATUS KEY句の指定がある場合,処理を続行する。画面入出力時のリターンコードの内容を調査して対処する必要がある※。
なお,これらのリターンコードはCOBOLのコンソール画面に表示されます。
-
データ有無コードを変更したい場合には,最初の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.入力用論理マップ名