テンプレート例
#NAME = 'データエントリ(サーバ)テンプレート' #OWNER = 'SEWB+/CONSTRUCTION SAMPLE' #OUTLINE = 'クライアント(SUP)から受信したデータを\n' # 'サーバ上の顧客DB(oracle)に出力する。\n' ************************************************************ * All Rights Reserved, Copyright (C) 1996,1997,Hitachi,Ltd.* * Licensed Material of Hitachi,Ltd. * ************************************************************ @@interface @プログラムID = {COMMENT = "プログラムIDを英字8文字で入力" }; @@* @@interface @顧客DB = {ATTR = DB, COMMENT = "入力必須、RDBの表名を指定する", IO = OUT, 表名 = {ATTR = TABLE_NAME }, レコード名 = {ATTR = RECORD_NAME}, ユーザID = {}, パスワード = {}, 接頭語 = {COMMENT = "ファイルのPREFIXを入れる" } }; @@* @@interface @RPC受信メッセージ = {ATTR = RPC_INPARM, COMMENT = "RPC受信メッセージ", IO = IN, 入力データ = {ATTR = RECORD_NAME} }; @@* @@interface @RPC発信メッセージ = {ATTR = RPC_REPLY, COMMENT = "RPC発信メッセージ", IO = OUT, 出力データ = {ATTR = RECORD_NAME} }; * IDENTIFICATION DIVISION. PROGRAM-ID. @プログラムID.. * DATA DIVISION. * WORKING-STORAGE SECTION. * * EXEC SQL INCLUDE SQLCA END-EXEC. * EXEC SQL BEGIN DECLARE SECTION END-EXEC. 77 ユーザID PIC X(30). 77 パスワード PIC X(30). EXEC SQL END DECLARE SECTION END-EXEC. 01 RDB-ERR PIC X(44) VALUE 'RDBアクセス時にエラーが発生しました。' . * EXEC SQL BEGIN DECLARE SECTION END-EXEC. @@expand @顧客DB[レコード名] PREFIX = "@顧客DB[接頭語].-"; EXEC SQL END DECLARE SECTION END-EXEC. * LINKAGE SECTION. * 01 INDATA. @@expand @RPC受信メッセージ[入力データ] PREFIX = "IN-"; 01 INDATA-LEN PIC S9(9) COMP. 01 OUTDATA. @@expand @RPC発信メッセージ[出力データ] PREFIX = "OUT-"; 01 OUTDATA-LEN PIC S9(9) COMP. * PROCEDURE DIVISION USING INDATA INDATA-LEN OUTDATA OUTDATA-LEN. * PROGRAM-CONTROL SECTION. PROGRAM-RUN. PERFORM PROLOGUE PERFORM MAIN PERFORM EPILOGUE . * STOP-RUN-PROC. EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC EXEC SQL COMMIT RELEASE END-EXEC EXEC SQL WHENEVER SQLERROR GO TO ABEND-PROC END-EXEC STOP RUN . * PROLOGUE SECTION. EXEC SQL WHENEVER SQLERROR GO TO ABEND-PROC END-EXEC INITIALIZE ユーザID パスワード MOVE '@顧客DB[ユーザID]' TO ユーザID MOVE '@顧客DB[パスワード]' TO パスワード EXEC SQL CONNECT :ユーザID IDENTIFIED BY :パスワード END-EXEC . * EPILOGUE SECTION. EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC EXEC SQL WHENEVER SQLERROR GO TO ABEND-PROC END-EXEC . * MAIN SECTION. PERFORM PROC-O1 PERFORM WRITE-01 . * ABEND-PROC SECTION. DISPLAY RDB-ERR EXIT PROGRAM . * WRITE-01 SECTION. @@set @ITEM = @@itemlist(@顧客DB); @@set @ITEM_CNT = @@count(@ITEM); EXEC SQL INSERT INTO @顧客DB[表名] VALUES ( :@顧客DB[接頭語]-@ITEM[1] @@set @I = 2; @@while ( @I <= @ITEM_CNT) ,:@顧客DB[接頭語].-@ITEM[@I] @@set @I = @I + 1; @@END; ) END-EXEC INITIALIZE @@set @I = 1; @@while ( @I <= @ITEM_CNT) @顧客DB[接頭語].-@ITEM[@I] @@set @I = @I + 1; @@END; . * PROC-O1 SECTION. @@UOC "O1-出力加工処理"; @@UOC "OUT-メッセージ編集"; . *(データエントリ,SVR01)1