F 管理ユーティリティの例
F.1 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
F.2 PGAU DEFINE CALL文の例
DEFINE CALL DB2IMAIN PKGCALL (PGADB2I_MAIN) PARMS ( (EMPNO IN ), (EMPREC OUT) ); DEFINE CALL DB2IDIAG PKGCALL (PGADB2I_DIAG) PARMS ( (DB2INFO OUT) );
F.3 PGAU DEFINE TRANSACTION文の例
DEFINE TRANSACTION DB2I CALL ( DB2IMAIN, DB2IDIAG ) SIDEPROFILE(CICSPROD) TPNAME(DB2I) LOGMODE(ORAPLU62) SYNCLEVEL(0) NLS_LANGUAGE("AMERICAN_AMERICA.WE8EBCDIC37C");
F.4 PGAU GENERATE文の例
GENERATE DB2I PKGNAME(PGADB2I) OUTFILE("pgadb2i");
ユーザーのハイ・レベル・アプリケーションでは、渡されて返された PL/SQLデータ型を参照することで、このヒントが使用されるようになりました。
表F-1は、パッケージ名PGADB2I
のTIPユーザー・トランザクション・データ型の説明を示します:
表F-1 パッケージ名PGADB2Iで使用されるTIPユーザー・トランザクション・データ型
データ型 | 説明 |
---|---|
|
COBOL |
|
COBOL |
|
COBOL |
アプリケーションが次を呼び出します:
PGADB2I.PGADB2I_INIT(trannum); PGADB2I.PGADB2I_MAIN( trannum, empno, emprec ); PGADB2I.PGADB2I_DIAG( trannum, db2 ); PGADB2I.PGADB2I_TERM(trannum, termtype);
F.5 暗黙的バージョニング定義の例
例は、暗黙的バージョニングを使用した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
が以前に定義されているため、'DB2IMAIN
'の新しいCALL
バージョンを作成します:
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
が以前に定義されているため、DB2I
の新しいTRANSACTION
バージョンが作成されます。 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には、2つのバージョンのDB2Iトランザクション定義があります。 オリジナルは、古い"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データ型を参照することで、このヒントが使用されるようになりました。
表F-2は、パッケージ名NEWDB2I
のTIPユーザー・トランザクション・データ型の説明を示します:
表F-2 パッケージ名NEWDB2IのTIPユーザー・トランザクション・データ型
データ型 | 説明 |
---|---|
|
COBOL |
|
COBOL |
|
COBOL |
アプリケーションが次を呼び出します:
NEWDB2I.PGADB2I_INIT(trannum); NEWDB2I.PGADB2I_MAIN( trannum, empno, newemp ); NEWDB2I.PGADB2I_DIAG( trannum, db2 ); NEWDB2I.PGADB2I_TERM(trannum, termtype);
F.6 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
'を自動的に反映します。 この変更は、'EMPREC
'のバージョン1を参照するコールを参照するトランザクションに対してTIPが次に生成される場合に有効になります。
これは、2番目のコールでEMPREC
を参照して従業員データを更新するため、両方のバージョンのトランザクションに暗黙的に影響します。
F.7 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
定義が残ります。