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-INDEXF.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定義が残ります。