クライアント/サーバ形態のUAP構成例を次の図に示します。ここでは,SPPのコーディング例だけを掲載します。このSPPには,「6.1 クライアント/サーバ形態のUAPのコーディング例(SUP,SPP DAMアクセス)」と同じSUPからサービス要求されるものとします。
図6-2 クライアント/サーバ形態のUAP構成例(TAMアクセス)
ここでは,図に示した構成例のコーディング例を示します。
SPPのメインプログラムのコーディング例を次に示します。
10 *
20 *******************************************************
30 * SPP01 メインプログラム *
40 *******************************************************
50 *
60 IDENTIFICATION DIVISION.
70 PROGRAM-ID. MAIN.
80 *
90 *******************************************************
100 * データ領域の設定 *
110 *******************************************************
120 *
130 DATA DIVISION.
140 WORKING-STORAGE SECTION.
150 01 RPC-ARG.
160 02 REQ-CODE PIC X(8) VALUE SPACE.
170 02 STATUS-CODE PIC X(5) VALUE SPACE.
180 02 FILLER PIC X(3).
190 02 FLAGS PIC S9(9) COMP.
200 PROCEDURE DIVISION.
210 *
220 *******************************************************
230 * RPC-OPEN(UAPの開始) *
240 *******************************************************
250 *
260 MOVE 'OPEN' TO REQ-CODE OF RPC-ARG.
270 MOVE ZERO TO FLAGS OF RPC-ARG.
280 CALL 'CBLDCRPC' USING RPC-ARG.
290 IF STATUS-CODE OF RPC-ARG NOT = '00000' THEN
300 DISPLAY 'SPP01 : RPC-OPEN FAILED. CODE = '
310 STATUS-CODE OF RPC-ARG
320 GO TO PROG-END
330 END-IF.
340 *
350 *******************************************************
360 * RPC-MAINLOOP(SPPのサービス開始) *
370 *******************************************************
380 *
390 MOVE 'MAINLOOP' TO REQ-CODE OF RPC-ARG.
400 MOVE ZERO TO FLAGS OF RPC-ARG.
410 CALL 'CBLDCRSV' USING RPC-ARG.
420 IF STATUS-CODE OF RPC-ARG NOT = '00000' THEN
430 DISPLAY ' SPP01 : RPC-MAINLOOP FAILED. CODE = '
440 STATUS-CODE OF RPC-ARG
450 END-IF.
460 *
470 *******************************************************
480 * RPC-CLOSE(UAPの終了) *
490 *******************************************************
500 *
510 MOVE 'CLOSE ' TO REQ-CODE OF RPC-ARG.
520 MOVE ZERO TO FLAGS OF RPC-ARG.
530 CALL 'CBLDCRPC' USING RPC-ARG.
540 PROG-END.
550 *
560 *******************************************************
570 * 終了処理 *
580 *******************************************************
590 *
600 DISPLAY ' SPP01 : GooD-by!' .
610 STOP RUN.
SPPのサービスプログラムのコーディング例を次に示します。
10 *
20 ******************************************************
30 * SPPサービスプログラム SVR01 *
40 ******************************************************
50 *
60 IDENTIFICATION DIVISION.
70 PROGRAM-ID. SVR01.
80 *
90 ******************************************************
100 * データ領域の設定 *
110 ******************************************************
120 *
130 DATA DIVISION.
140 WORKING-STORAGE SECTION.
150 01 TAM-ARG1.
160 02 REQ-CODE PIC X(4) VALUE SPACE.
170 02 STATUS-CODE PIC X(5) VALUE SPACE.
180 02 FILLER PIC X(3).
190 02 TABLE-NAME PIC X(32) VALUE SPACE.
200 02 FILLER PIC X(68).
210 02 BUF-SIZE PIC S9(4) COMP VALUE ZERO.
220 02 FILLER PIC X(398).
230 01 READ-ARG1.
240 02 DML-KIND PIC X(4) VALUE SPACE.
250 02 LOK-KIND PIC X(1) VALUE SPACE.
260 02 FILLER PIC X(3).
270 01 WRITE-ARG1.
280 02 DML-KIND PIC X(4) VALUE SPACE.
290 02 FILLER PIC X(4).
300 01 KEY-DATA1 PIC X(10) VALUE X'00000000000000000001'.
310 01 KEY-DATA2 PIC X(10) VALUE X'00000000000000000002'.
320 01 KEY-DATA4 PIC X(10) VALUE X'00000000000000000004'.
330 01 KEY-ARG.
340 02 KEYNAME PIC X(10) VALUE SPACE.
350 01 W-BUFFER.
360 02 KEYNAME PIC X(10) VALUE SPACE.
370 02 DATAREA PIC X(118) VALUE SPACE.
380 LINKAGE SECTION.
390 77 IN-DATA PIC X(118).
400 77 IN-LENG PIC S9(9) COMP.
410 77 OUT-DATA PIC X(32).
420 77 OUT-LENG PIC S9(9) COMP.
430 PROCEDURE DIVISION USING IN-DATA IN-LENG OUT-DATA OUT-LENG.
440 DISPLAY ' SVR01:PROCEDURE START' .
450 *
460 ******************************************************
470 * TAM-READ(TAMテーブルの第1レコードを入力) *
480 ******************************************************
490 *
500 MOVE 'tamtable30' TO TABLE-NAME OF TAM-ARG1.
510 MOVE 128 TO BUF-SIZE OF TAM-ARG1.
520 MOVE 'FCHU' TO DML-KIND OF READ-ARG1.
530 MOVE KEY-DATA1 TO KEY-ARG.
540 CALL 'CBLDCTAM' USING TAM-ARG1 READ-ARG1 KEY-ARG W-BUFFER.
550 IF STATUS-CODE OF TAM-ARG1 NOT = '00000' THEN
560 DISPLAY 'SVR01:TAM-READ FAILED. CODE = '
570 STATUS-CODE OF TAM-ARG1
580 MOVE 'SVR01: TAM READ FAILED' TO OUT-DATA
590 MOVE 22 TO OUT-LENG
600 GO TO PROG-END
610 END-IF.
620 *
630 **********************************************************
640 * TAM-REWRITE(TAMテーブル第1レコードの入力が前提の更新) *
650 **********************************************************
660 *
670 MOVE 'MFY ' TO DML-KIND OF WRITE-ARG1.
680 MOVE IN-DATA TO DATAREA OF W-BUFFER.
690 CALL 'CBLDCTAM' USING TAM-ARG1 WRITE-ARG1 KEY-ARG W-BUFFER.
700 IF STATUS-CODE OF TAM-ARG1 NOT = '00000' THEN
710 DISPLAY 'SVR01:TAM-REWRITE FAILED. CODE = '
720 STATUS-CODE OF TAM-ARG1
730 MOVE 'SVR01: TAM REWRITE FAILED' TO OUT-DATA
740 MOVE 25 TO OUT-LENG
750 GO TO PROG-END
760 END-IF.
770 *
780 ******************************************************
790 * TAM-WRITE(TAMテーブルの第2レコードを更新) *
800 ******************************************************
810 *
820 MOVE 'MFY ' TO DML-KIND OF WRITE-ARG1.
830 MOVE KEY-DATA2 TO KEY-ARG.
840 MOVE KEY-DATA2 TO KEYNAME OF W-BUFFER.
850 MOVE IN-DATA TO DATAREA OF W-BUFFER.
860 CALL 'CBLDCTAM' USING TAM-ARG1 WRITE-ARG1 KEY-ARG W-BUFFER.
870 IF STATUS-CODE OF TAM-ARG1 NOT = '00000' THEN
880 DISPLAY 'SVR01:TAM-WRITE FAILED. CODE = '
890 STATUS-CODE OF TAM-ARG1
900 MOVE 'SVR01: TAM WRITE FAILED' TO OUT-DATA
910 MOVE 23 TO OUT-LENG
920 GO TO PROG-END
930 END-IF.
940 *
950 ******************************************************
960 * TAM-DELETE(TAMテーブルの第4レコードを削除) *
970 ******************************************************
980 *
990 MOVE 'ERS ' TO DML-KIND OF WRITE-ARG1.
1000 MOVE KEY-DATA4 TO KEY-ARG.
1010 CALL 'CBLDCTAM' USING TAM-ARG1 WRITE-ARG1 KEY-ARG W-BUFFER.
1020 IF STATUS-CODE OF TAM-ARG1 NOT = '00000' THEN
1030 DISPLAY 'SVR01:TAM-DELETE FAILED. CODE = '
1040 STATUS-CODE OF TAM-ARG1
1050 MOVE 'SVR01: TAM DELETE FAILED' TO OUT-DATA
1060 MOVE 24 TO OUT-LENG
1070 END-IF.
1080 PROG-END.
1090 *
1100 ******************************************************
1110 * 終了処理 *
1120 ******************************************************
1130 *
1140 DISPLAY 'SVR01:GooD-by!'.
1150 EXIT PROGRAM.