Linuxのサーバアプリケーションを作成する場合の、COBOL登録集、アプリケーション情報入力ファイル、および業務アプリケーションの作成例を示します。
業務アプリケーションのインタフェース(COBOL登録集)作成
000010* SVRINTERFACE.cbl 000020 01 FROM_DATE. *> INパラメタ 000030 02 YYYY PIC 9(4). *> :西暦 000040 02 MM PIC 9(2). *> :月 000050 02 DD PIC 9(2). *> :日 000060 01 PASS_DAYS PIC S9(4) BINARY. *> INパラメタ 000070 01 TO_DATE. *> OUTパラメタ 000080 02 YYYY PIC 9(4). *> :西暦 000090 02 MM PIC 9(2). *> :月 000100 02 DD PIC 9(2). *> :日 |
アプリケーション情報入力ファイル作成
<?xml version="1.0" encoding="UTF-8"?> <apfw-app> <server> <target name="apl" /> <library name="libserverapl.so" /> <cobol> <base_name>sample</base_name> <operation name="SERVER_APL"> <parameter direction="IN">FROM_DATE</parameter> <parameter direction="IN">PASS_DAYS</parameter> <parameter direction="OUT">TO_DATE</parameter> </operation> <copyfile name="SVRINTERFACE.cbl" /> </cobol> </server> <client> <bean> <package>com.fujitsu.adapter</package> </bean> </client> </apfw-app> |
業務アプリケーションの作成
000010*----------------------------------------------------------------- 000020* INTEGER-OF-DATE関数およびDATE-OF-INTEGER関数を利用して、 000030* 指定日数が経過した後の日付を求めます。 000040*----------------------------------------------------------------- 000050 IDENTIFICATION DIVISION. 000060 PROGRAM-ID. SERVER_APL. 000070 DATA DIVISION. 000080 WORKING-STORAGE SECTION. 000090 01 WORK-DATE PIC 9(8). 000100 01 WORK-DAY PIC S9(9) BINARY. 000110 LINKAGE SECTION. 000120 COPY "SVRINTERFACE.cbl". *> パラメタ 000130 COPY APFW_RTN. *> 処理結果情報 000140 COPY APFW_EXCEPTION. *> 例外情報 000150 PROCEDURE DIVISION USING FROM_DATE PASS_DAYS TO_DATE 000160 APFW_RTN APFW_EXCEPTION. 000170*----------------------------------------------------------------- 000180* 指定された日数が経過後の日付を通日で計算します。 000190*----------------------------------------------------------------- 000200 MOVE FROM_DATE TO WORK-DATE 000210 COMPUTE WORK-DAY = FUNCTION INTEGER-OF-DATE(WORK-DATE) + PASS_DAYS. 000220*----------------------------------------------------------------- 000230* 表示のため、通日を標準形式(YYYYMMDD)に変換します。 000240*----------------------------------------------------------------- 000250 COMPUTE WORK-DATE = FUNCTION DATE-OF-INTEGER(WORK-DAY). 000260 MOVE WORK-DATE TO TO_DATE 000270*----------------------------------------------------------------- 000280 EXIT PROGRAM. 000290 END PROGRAM SERVER_APL. |
この例では、入力パラメタFORM_DATEとTO_DATEは、同じ構造のデータ記述を使用しています。
このような場合、COBOLプログラミングで共通のデータ記述だけを含むCOBOL登録集を使用することができます。以下に例を示します。
業務アプリケーションのインタフェース(COBOL登録集)作成
000010* SVRINTERFACE1.CBL 000020* YYYYMMDD形式のデータの共通定義 000030 02 YYYY PIC 9(4). *> :西暦 000040 02 MM PIC 9(2). *> :月 000050 02 DD PIC 9(2). *> :日 |
000010* SVRINTERFACE2.CBL 000020 01 PASS_DAYS PIC S9(4) BINARY. *> INパラメタ |
アプリケーション情報入力ファイル作成
<?xml version="1.0" encoding= "UTF-8"?> <apfw-app> <server> <target name="apl" /> <library name="libserverapl.so" /> <cobol> <base_name>sample</base_name> <operation name="SERVER_APL"> <parameter direction="IN">FROM_DATE</parameter> <parameter direction="IN">PASS_DAYS</parameter> <parameter direction="OUT">TO_DATE</parameter> </operation> <copyfile name="SVRINTERFACE1.cbl"> <parameter>FROM_DATE</parameter> <parameter>TO_DATE</parameter> </copyfile> <copyfile name="SVRINTERFACE2.cbl"/> </cobol> </server> <client> <bean> <package>com.fujitsu.adapter</package> </bean> </client> </apfw-app> |
レベル番号が01または77の項目から始まらないCOBOL登録集を使用する場合には、copyfileタグの子要素にparameterタグを指定して、パラメタとして参照する際のパラメタ名を指定します。
業務アプリケーションの作成
000010*----------------------------------------------------------------- 000020* INTEGER-OF-DATE関数およびDATE-OF-INTEGER関数を利用して、 000030* 指定日数が経過した後の日付を求めます。 000040*----------------------------------------------------------------- 000050 IDENTIFICATION DIVISION. 000060 PROGRAM-ID. SERVER_APL. 000070 DATA DIVISION. 000080 WORKING-STORAGE SECTION. 000090 01 WORK-DATE PIC 9(8). 000100 01 WORK-DAY PIC S9(9) BINARY. 000110 LINKAGE SECTION. 000120 01 FROM_DATE. 000130 COPY "SVRINTERFACE1.cbl". *> パラメタ 000140 COPY "SVRINTERFACE2.cbl". *> パラメタ 000150 01 TO_DATE. 000160 COPY "SVRINTERFACE1.cbl". *> パラメタ 000170 COPY APFW_RTN. *> 処理結果情報 000180 COPY APFW_EXCEPTION. *> 例外情報 000190 PROCEDURE DIVISION USING FROM_DATE PASS_DAYS TO_DATE 000200 APFW_RTN APFW_EXCEPTION. .... |