2.3.2 COBOLプログラムのコーディング

COBOLアプリケーションからは、仮想ファイルを通常の順編成ファイルとしてアクセスすることにより、メール、ウェブ側からのデータを受信したり、メール、ウェブ側へデータを送信することができます。

ここでは、COBOLプログラムにて、イントラネット連携機能を使用するコーディングについての概要を説明します。

@ 仮想ファイルの定義
  順編成ファイルとして定義します。

各デザイナにて設定した仮想ファイル名は、SYS@CATに登録されて、A−VXとWindows(メール、ウェブ)との連携を行うことができます。
A 仮想ファイルの装置名指定
  装置名“MSD△△△”でアクセスすると、指定した仮想ファイルは従来のファイルと同じように扱われます。

装置名“LNK”を指定した場合には、SYS@CATを参照せずに指定した仮想ファイルが扱われます。

装置名「LNK」は、以下の装置名が指定可能となります。

・「LNK△△△」……デザイナで定義したコンポーネントを呼び出す。

・「LNKMAL」……メールコンポーネントを呼び出す。

・「LNKWEB」……ウェブコンポーネントを呼び出す。

上記のように、装置名「LNK」でアクセスする場合には、システムサブルーチン(CBLASGN)を使用して、装置名の指定を行います。
B 仮想ファイルのフィールド定義
  仮想ファイルは、入出力フォームの元となるレコード定義/表定義の情報をもとに生成されますので、レコード長やフィールドの定義はこれにしたがって定義してください。デザイナで画面項目の選択や項目のならべ換えを行なっても仮想ファイルのフィールドに変更はありません。
C 仮想ファイルへのアクセス
  COBOLアプリケーションにて、仮想ファイルへWRITE命令でメール、ウェブへデータ送信します。READ命令でメール、ウェブからデータを受信することができます。

・仮想ファイルの書き込み処理(データ送信)を行った後、そのデータを読み込み処理(データ受信)を行うことはできません。

・仮想ファイルは、テンポラリファイルのように使用されるため、別々のプログラムで同一名の仮想ファイルを使用しても、別々のファイルとして扱われます。

・仮想ファイルは1つのプログラムで複数の仮想ファイルにアクセスできますが、同時にオープンできる仮想ファイルは常に1つのみです。

・Windows主導型で起動されたCOBOLアプリケーションで、Windows側で作成された仮想ファイルを読み込まず、別の仮想ファイルに書き出しを行うと、Windows側で作成した仮想ファイルのデータは消えてしまいます。

・仮想ファイルの読み込み処理(データ受信)が終わると、仮想ファイルは削除され、再度読み込み処理(データ受信)を行うことはできません。
D 仮想ファイルのアクセスパターン
  COBOLアプリケーションで利用できる仮想ファイルへのアクセスパターンは以下の2つパターンとなります。

・A−VX主導型……COBOLアプリケーションから、メール、ウェブへデータを送信(WRITE処理)を行います。

・Windows主導型  ……メール、ウェブよりCOBOLアプリケーションが起動を行い、COBOLアプリケーションがメール、ウェブからのデータを引き取り(READ処理)、その後、メールウェブ、へデータ送信(WRITE処理)を行います。

00000002.gif

※WRITE処理は複数回繰り返すことができます。
E 仮想ファイルの使用できる入出力命令
  ・オープン命令(INPUTモード)

Windows側で送信データを読み込むために仮想ファイルをオープンします。以下の様に条件によってエラーの返却方法が変わります。
  1. 既に存在する仮想ファイルとは違う名前でアクセスをした場合、オープン命令でファイル未発見のエラーとなります。

  2. 仮想ファイルが存在しな時に仮想ファイルのアクセスを行った場合、オープン命令は正常終了となります。次のREAD命令でレコードエンドのファイルステータス‘10’を返却します。

・オープン命令(OUTPUTモード)

Windows側にデータを送信するため仮想ファイルをオープンします。

・クローズ命令

仮想ファイルのクローズ処理を行います。

INPUTモードのオープン命令に対応するクローズ命令の場合、仮想ファイルの削除を行います。

OUTPUTモードのオープン命令に対応するクローズ命令の場合、Windows側へデータ送信を行います。

・READ命令(オープンモードは必ずINPUT)

仮想ファイルのデータの読み込みを行います。

・WRITE命令(オープンモードは必ずOUTPUT)

仮想ファイルにデータの書き込みを行います。

COBOLアプリケーションから存在しない仮想ファイルの読み込み処理を行うと、以下のような結果となります。

・Windows主導型で仮想ファイルが作成されている場合に、COBOLアプリケーションから別の名前の仮想ファイルにアクセスするとファイル未発見のエラーとなる。

・仮想ファイルが存在しない状態で、COBOLアプリケーションから仮想ファイルの読み込みを行うと、空ファイル(OPENは成功するが、RECORD READでデータエンドのステータス返却)となる。

※ ただし、フォームの定義情報に合わない場合には、その旨のエラーが表示される。
F 1つのCOBOLアプリケーションでメール、ウェブの両方使用することはできません。
G Windows側からCOBOLアプリケーションを起動する場合、オペレータへの確認メッセージを表示することができないので、COBOLアプリケーションにて、利用者情報記録のログファイルへの出力を行い、確認できるようにすると保守効率を向上させることができます。
  ログファイルの出力については、『COBOLシステムサブルーチン説明書』を参照してください。
H コンポーネント処理結果引取り機能
  COBOLアプリケーションが、Windows側へデータの出力後、Windows側のコンポーネントの処理結果を取得したい場合には、処理結果引取り用のCOBOLシステムサブルーチン(CBLLBSTS)のCALL命令を実行することで、直前にCLOSEした仮想ファイルの処理結果をデータとして取得することができます。処理結果のデータの詳細は「2.3.3 コンポーネント側処理結果引取り機能の実行結果データについて」を参照してください。

尚、本CALL命令は、実行結果を取得したい仮想ファイルをCLOSEした後に実行して下さい。

また、Windows側のコンポーネントに一度もデータ送信行っていない状態で本CALL命令を発行しないようにしてください。