F 管理ユーティリティのサンプル
サンプルPGAU DEFINE DATA文
DEFINE DATA EMPNO PLSDNAME (EMPNO) USAGE (PASS) LANGUAGE (IBMVSCOBOLII) ( 01 EMP-NO PIC X(6). ); DEFINE DATA EMPREC PLSDNAME (DCLEMP) USAGE (PASS) LANGUAGE (IBMVSCOBOLII) INFILE("emp.cob");
ファイルemp.cob
には次の内容が含まれています:
01 DCLEMP. 10 EMPNO PIC X(6). 10 FIRSTNME. 49 FIRSTNME-LEN PIC S9(4) USAGE COMP. 49 FIRSTNME-TEXT PIC X(12). 10 MIDINIT PIC X(1). 10 LASTNAME. 49 LASTNAME-LEN PIC S9(4) USAGE COMP. 49 LASTNAME-TEXT PIC X(15). 10 WORKDEPT PIC X(3). 10 PHONENO PIC X(4). 10 HIREDATE PIC X(10). 10 JOB PIC X(8). 10 EDLEVEL PIC S9(4) USAGE COMP. 10 SEX PIC X(1) 10 BIRTHDATE PIC X(10). 10 SALARY PIC S9999999V99 USAGE COMP-3. 10 BONUS PIC S9999999V99 USAGE COMP-3. 10 COMM PIC S9999999V99 USAGE COMP-3. DEFINE DATA DB2INFO PLSDNAME (DB2) USAGE (PASS) LANGUAGE (IBMVSCOBOLII) INFILE("db2.cob");
ファイルdb2.cob
には次の内容が含まれています:
01 DB2. 05 SQLCODE PIC S9(9) COMP-4. 05 SQLERRM. 49 SQLERRML PIC S9(4) COMP-4. 49 SQLERRT PIC X(70). 05 DSNERRM. 49 DSNERRML PIC S9(4) COMP-4. 49 DSNERRMT PIC X(240) OCCURS 8 TIMES INDEXED BY ERROR-INDEX
サンプルPGAU DEFINE CALL文
DEFINE CALL DB2IMAIN PKGCALL (PGADB2I_MAIN) PARMS ( (EMPNO IN ), (EMPREC OUT) ); DEFINE CALL DB2IDIAG PKGCALL (PGADB2I_DIAG) PARMS ( (DB2INFO OUT) );
サンプルPGAU DEFINE TRANSACTION文
DEFINE TRANSACTION DB2I CALL ( DB2IMAIN, DB2IDIAG ) SIDEPROFILE(CICSPROD) TPNAME(DB2I) LOGMODE(ORAPLU62) SYNCLEVEL(0) NLS_LANGUAGE("AMERICAN_AMERICA.WE8EBCDIC37C");
サンプルPGAU GENERATE文
GENERATE DB2I PKGNAME(PGADB2I) OUTFILE("pgadb2i");
ユーザーの上位レベルのアプリケーションは、このTIPを使用して、渡されて戻されたPL/SQLデータ型を参照します。
表F-1は、パッケージ名PGADB2I
のTIPユーザー・トランザクション・データ型の説明を提供します:
表F-1パッケージ名で使用されるTIPユーザー・トランザクションのデータ型PGADB2I
データ型 | 説明 |
---|---|
|
COBOL |
|
これはCOBOL |
|
これはCOBOL |
アプリケーション呼び出し:
PGADB2I.PGADB2I_INIT(trannum); PGADB2I.PGADB2I_MAIN( trannum, empno, emprec ); PGADB2I.PGADB2I_DIAG( trannum, db2 ); PGADB2I.PGADB2I_TERM(trannum, termtype);
暗黙のバージョニング定義のサンプル
例は、暗黙のバージョニングを伴うDATA
、CALL
、およびTRANSACTION
エントリのサンプル定義です。
この例では、'EMPREC
' DATA
が以前に定義されているため、'EMPREC
'の新しいDATA
バージョンを作成します:
DEFINE DATA EMPREC PLSDNAME (NEWEMP) USAGE (PASS) LANGUAGE (IBMVSCOBOLII) INFILE("emp2.cob");
ファイルemp2.cob
には次の内容が含まれています:
01 NEWEMP. 10 EMPNO PIC X(6). 10 FIRSTNME. 49 FIRSTNME-LEN PIC S9(4) USAGE COMP. 49 FIRSTNME-TEXT PIC X(12). 10 MIDINIT PIC X(1). 10 LASTNAME. 49 LASTNAME-LEN PIC S9(4) USAGE COMP. 49 LASTNAME-TEXT PIC X(15). 10 WORKDEPT PIC X(3). 10 PHONENO PIC X(3). 10 HIREDATE PIC X(10). 10 JOB PIC X(8). 10 EDLEVEL PIC S9(4) USAGE COMP. 10 SEX PIC X(1). 10 BIRTHDATE PIC X(10). 10 SALARY PIC S9999999V99 USAGE COMP-3. 10 BONUS PIC S9999999V99 USAGE COMP-3. 10 COMM PIC S9999999V99 USAGE COMP-3. 10 YTD. 15 SAL PIC S9(9)V99 USAGE COMP-3. 15 BON PIC S9(9)V99 USAGE COMP-3. 15 COM PIC S9(9)V99 USAGE COMP-3.
DATA
のバージョン番号が割り当てられているかどうかを確認するには、次のSQL問合せを発行します:
SELECT MAX(pd.version) FROM pga_data pd WHERE pd.dname = 'EMPREC';
'EMPREC
'の更新されたバージョンに関連する追加情報を確認するには、この問合せを使用できます:
SELECT * FROM pga_data pd WHERE pd.dname = 'EMPREC';
この例では、'DB2IMAIN
' CALL
が以前に定義されているため、新しいCALL
バージョンの'DB2IMAIN
'を作成します:
DEFINE CALL DB2IMAIN PKGCALL (PGADB2I_MAIN) PARMS ( (EMPNO IN ), (EMPREC OUT VERSION(ddddd) ) );
ここで、ddddd
は、以前のDEFINE DATA
が更新されたEMPREC
の後に照会されたEMPREC DATA
定義のバージョン番号です。
割り当てられているコール・バージョン番号を確認するには、次のSQL問合せを発行します:
SELECT MAX(pc.version) FROM pga_call pc WHERE pc.cname = 'DB2IMAIN';
'DB2IMAIN
'の更新されたバージョンに関連する追加情報を確認するには、この問合せを使用できます:
SELECT * FROM pga_call pc WHERE pc.cname = 'DB2IMAIN';
DEFINE TRANSACTION
の例では、'DB2I' TRANSACTION
が以前に定義されているため、新しいTRANSACTION
バージョンの'DB2I
'が作成されます。 DB2Iトランザクションの新しいバージョンの本質的な違いは、最初の呼び出しで新しいPL/SQLレコード形式"NEWEMP
" (COBOL NEWEMP
形式に対応)を使用して従業員データを問合せすることです。
注意:
上記のようなレコード・フォーマットの変更は、リモート・トランザクション・プログラムの要件と同期させる必要があります。 PGA TIPのみを変更すると、エラーが発生します。 共通の変更を伴う新しいリモート・トランザクション・プログラムは、別個のCICSシステム上で実行され、以下のSIDEPROFILE
パラメータのCICSPROD
からCICSTEST
への変更を開始しました。
DEFINE TRANSACTION DB2I CALL ( DB2IMAIN VERSION (ccccc), DB2IDIAG ) SIDEPROFILE(CICSTEST) TPNAME(DB2I) LOGMODE(ORAPLU62) SYNCLEVEL(0) NLS_LANGUAGE("AMERICAN_AMERICA.WE8EBCDIC37C");
ここで、ccccc
は、前のDEFINE CALL
が更新されたDB2IMAIN
の後に照会されたDB2IMAIN
CALL
定義のバージョン番号です。
PGA DDにはDB2Iトランザクション定義の2つのバージョンがあります。 オリジナルは古い"DCLEMP
"レコード形式を使用し、本番CICSシステム上でトランザクション"DB2I
"を開始します。 最新の"NEWEMP
"レコード形式を使用し、テストCICSシステムでトランザクション"DB2I
"を開始します。
どのトランザクション・バージョン番号が割り当てられているかを判別するために、このSQL問合せを出すことができます:
SELECT MAX(pt.version) FROM pga_trans pt WHERE pt.tname = 'DB2I';
'DB2I
'の更新されたバージョンに関連する追加情報を確認するには、この問合せを使用できます:
SELECT * FROM pga_trans pt WHERE pt.tname = 'DB2I';
この例では、以前に定義されたTRANSACTION
、CALL
、およびDATA
の新しいバージョンを使用して新しいパッケージを生成します:
GENERATE DB2I VERSION(ttttt) PKGNAME(NEWDB2I) OUTFILE("pgadb2i");
ここで、ttttt
は、以前の DEFINE TRANSACTION
が更新されたDB2I
の後に照会されたDB2I TRANSACTION
定義のバージョン番号です。
以前のPL/SQLパッケージ・ファイルpgadb2i.pkh
とpgadb2i.pkb
は上書きされています。 新しいパッケージを別々に保つには、出力ファイルの指定を変更してください。 次に例を示します。
GENERATE DB2I VERSION(ttttt) PKGNAME(NEWDB2I) OUTFILE("newdb2i");
ユーザーの上位アプリケーションは、渡されたPL/SQLデータ型を参照してこのTIPを使用するようになりました。
表F-2は、パッケージ名NEWDB2I
のTIPユーザー・トランザクション・データ型の説明を提供します:
表F-2パッケージ名NEWDB2IのTIPユーザー・トランザクション・データ型
データ型 | 説明 |
---|---|
|
PL/SQL変数はCOBOL |
|
PL/SQL |
|
PL/SQL |
アプリケーション呼び出し:
NEWDB2I.PGADB2I_INIT(trannum); NEWDB2I.PGADB2I_MAIN( trannum, empno, newemp ); NEWDB2I.PGADB2I_DIAG( trannum, db2 ); NEWDB2I.PGADB2I_TERM(trannum, termtype);
サンプルPGAU REDEFINE DATA文
EDLEVEL USAGE
がCOMP-3
になる単一フィールドの再定義:
REDEFINE DATA EMPREC PLSDNAME(DCLEMP) LANGUAGE(IBMVSCOBOLII) FIELD(EDLEVEL) PLSFNAME(PLSRECTYPE) ( 10 EDLEVEL PIC S9(4) USAGE IS COMP-3. );
デフォルトでは、最新の呼び出しに暗黙的に影響を与えるEMPREC
の最新バージョンとそれを参照するトランザクション定義が再定義されます。
従業員の姓フィールドと姓フィールドが展開され、従業員のミドル・イニシャルが削除される、複数フィールドの再定義のサンプル。
REDEFINE DATA EMPREC VERSION(1) PLSDNAME(DCLEMP) LANGUAGE(IBMVSCOBOLII) INFILE("emp1.cob");
ファイルemp1.cob
には次の内容が含まれています:
01 DCLEMP. 10 EMPNO PIC X(6). 10 FIRSTNME. 49 FIRSTNME-LEN PIC S9(4) USAGE COMP. 49 FIRSTNME-TEXT PIC X(15). 10 LASTNAME. 49 LASTNAME-LEN PIC S9(4) USAGE COMP. 49 LASTNAME-TEXT PIC X(20). 10 WORKDEPT PIC X(3). 10 PHONENO PIC X(4). 10 HIREDATE PIC X(10). 10 JOB PIC X(8). 10 EDLEVEL PIC S9(4) USAGE COMP. 10 SEX PIC X(1). 10 BIRTHDATE PIC X(10). 10 SALARY PIC S9999999V99 USAGE COMP-3. 10 BONUS PIC S9999999V99 USAGE COMP-3. 10 COMM PIC S9999999V99 USAGE COMP-3.
EMPREC
のデータ定義のバージョン1が再定義されるという前提があります。 これにより、バージョン番号を変更することなく、最初の'EMPREC
'サンプル・データ定義の再定義が行われます。 したがって、'EMPREC
'のバージョン1を参照する既存のコールおよびトランザクション定義は、変更された'EMPREC
'を自動的に反映します。 この変更は、バージョン1の'EMPREC
'を参照しているコールを参照するトランザクションに対して、次にTIPが生成されたときに有効になります。
これは暗黙的に両方のバージョンのトランザクションに影響します。これは、従業員データを更新するための2番目の呼び出しで両方がEMPREC
を参照するためです。
サンプルPGAU UNDEFINE文
このサンプルは、複数のバージョンを持つ特定のバージョンの定義を削除した後、特定の名前付き定義のすべてのバージョンを削除する方法を示しています。
UNDEFINE DATA EMPREC VERSION (ddddd); UNDEFINE DATA EMPREC VERSION (ALL); UNDEFINE CALL DB2IMAIN VERSION (ccccc); UNDEFINE CALL DB2IMAIN VERS (all); UNDEFINE TRANSACTION DB2I vers (ttttt); UNDEFINE TRANSACTION DB2I vers (all);
以前のUNDEFINE
文は、EMPNO
のDATA
定義と、PGA DDのDB2IDIAG
のCALL
定義を残しています。