このドキュメントでは、Adabas トリガとストアドプロシージャ機能のインストール方法について説明します。 NATPARM の設定、プリンタとワークファイルの割り当て、Natural Security 環境の構成、ストアドプロシージャのリンクルーチンの設定について説明します。
このドキュメントでは、次のトピックについて説明します。
Adabas に付属の Adabas トリガとストアドプロシージャ機能は、次のオペレーティングシステム用の Natural 3.1 以上で使用できます。
z/OS
VSE
z/VM
BS2000
この機能では、Adabas Online System(AOS)が必要です。
Natural Optimizer Compiler は必須ではありませんが、トリガとストアドプロシージャの使用時に Natural Optimizer Compiler を使用すると、大幅にパフォーマンスが向上することがあります。
Adabas トリガとストアドプロシージャ機能のインストールは、3 つに分かれています。
オンラインユーザーインターフェイスであるトリガメンテナンスのインストール。
Adabas ニュークリアスコンポーネントである Adabas トリガドライバのインストール。
Natural ニュークリアスコンポーネントである Natural トリガドライバのインストール。
Adabas Online System(AOS)アドオン製品をインストールします。 Adabas Online System のドキュメントに記載されている手順を使用します。
ADALOD ユーティリティを使用して、トリガファイルを Adabas データベースにロードします。
トリガファイルのロードを指定するには、ADALOD パラメータでキーワード TRIGGER を指定します。 チェックポイントまたはセキュリティファイルをロードするときは、CHECKPOINT または SECURITY パラメータを指定して同じ方法で行います。
ADACMP のステップは省略します。FDT 定義はすでにニュークリアスによって認識されるため、この手順は不要です。
この時点でトリガファイルは、Adabas Security を持つことが許可されていません。つまり、Adabas パスワードと暗号化またはセキュリティバイバリューは設定されていません。
オンライン Natural ニュークリアスでトリガとストアドプロシージャを使用するように NATPARM を更新し、NATPARM を Natural ニュークリアスに再リンクします。 次のいずれかを使用します。
トリガファイルの論理ファイル番号は 154 です。
注意:
NTFILE マクロまたは LFILE
パラメータを使用しない場合は、Adabas トリガとストアドプロシージャ機能を開始するたびに、データベース ID
とファイル番号を入力する必要があります。
Natural セッションから Adabas トリガとストアドプロシージャ機能を開始し、プロファイルを作成します。
Adabas Online System にログオンし、オプション[Trigger Maintenance]を選択します。 Enter キーを押します。
メインメニューから、[A](Administrator Functions)を選択し、Enter キーを押します。 必要に応じて、データベース ID とファイル番号を入力し、Enter キーを 2 回押します。
注意:
データベース ID とファイル番号は、前述の手順 3 で NTFILE マクロまたは
LFILE
パラメータを使用していない場合、または定義で指定した値が正しくない場合に限り、必要になります。
[Administrator Functions]メニューから、[M](Modify Profile Information)を選択し、Enter キーを押します。
[Modify Profile Information]画面には、上書き可能なデフォルト値が表示されます。 ただし、Adabas トリガとストアドプロシージャ機能を実行する前に、プロファイルを正しくインストールしておく必要があります。 詳細については、「プロファイル情報の表示/修正」を参照してください。
注意:
トリガメンテナンスは、必要なファイル - フィールドテーブルとトリガ定義が追加されるまで、完全には機能しません。
詳細については、「トリガメンテナンス」を参照してください。
モジュール ADATSP と STPEND は、Adabas ロードライブラリ内にあります。 TRGMPMJ は、Adabas ニュークリアスを開始するために使用する JCL/JCS です。
ADARUN SPT=YES と設定してニュークリアスで Adabas トリガとストアドプロシージャ機能をアクティブ化するか、SPT=NO と設定して非アクティブ化します。
注意:
これらは、最大サブシステム数の値、Adabas トリガプロファイルでの CMPRINT 割り当て数、およびプロシージャで使用される出力およびワークファイルに依存します。
指定されたすべての Natural ワークファイルおよび出力ファイルに追加のラベルを指定します。
BS2000 ジョブでは、ラベルを指定する必要はありません。 出力は次のファイルにあります。
L.L.db_task_nr.natural_load_name.timestamp
上記の意味は次に示すとおりです。
db_task_nr | トリガおよびストアドプロシージャ機能を実行しているデータベースのタスク番号 |
natural_load_name | バッチ Natural モジュールの名前 |
timestamp | サブタスクが開始された時間を示す文字 |
次の例で、前述の手順 2 と 3 を説明します。 この例では、次のように設定されています。
ダイナミックな CMPRINT 割り当て(Adabas トリガプロファイルで指定するオプション)は TSPRT に設定されています。
この例で定義されているサブシステムの最大数は 5 です。
z/OS JCL の場合は、次のラベルを指定する必要があります。
//TSPRT01 DD SYSOUT=X //TSPRT02 DD SYSOUT=X //TSPRT03 DD SYSOUT=X //TSPRT04 DD SYSOUT=X //TSPRT05 DD SYSOUT=X
VSE JCS の場合は、次のラベルを指定する必要があります。
// ASSGN SYS041,DISK,VOL=PACK01,SHR // DLBL TSPRT01,'PRINT.OUTPUT1',0,SD // EXTENT SYS041,PACK01,1.0,SSSS,LLL // ASSGN SYS042,DISK,VOL=PACK01,SHR // DLBL TSPRT02,'PRINT.OUTPUT2',0,SD // EXTENT SYS042,PACK01,1.0,SSSS,LLL // ASSGN SYS043,DISK,VOL=PACK01,SHR // DLBL TSPRT03,'PRINT.OUTPUT3',0,SD // EXTENT SYS043,PACK01,1.0,SSSS,LLL // ASSGN SYS044,DISK,VOL=PACK01,SHR // DLBL TSPRT04,'PRINT.OUTPUT4',0,SD // EXTENT SYS044,PACK01,1.0,SSSS,LLL // ASSGN SYS045,DISK,VOL=PACK01,SHR // DLBL TSPRT05,'PRINT.OUTPUT5',0,SD // EXTENT SYS045,PACK01,1.0,SSSS,LLL
z/VM EXEC の場合は、次のラベルを指定する必要があります。
"FILEDEF TSPRT01 DISK TSPRT01 LISTING A" "FILEDEF TSPRT02 DISK TSPRT02 LISTING A" "FILEDEF TSPRT03 DISK TSPRT03 LISTING A" "FILEDEF TSPRT04 DISK TSPRT04 LISTING A" "FILEDEF TSPRT05 DISK TSPRT05 LISTING A"
プロファイルで定義されている 5 つのサブシステムのそれぞれで、出力ファイルに対して WRITE、PRINT、または DISPLAY を実行できる場合は、MPM JCL で次の定義を指定する必要があります。
z/OS の場合を以下に示します。
//CMPRT01 DD SYSOUT=X //CMPRT02 DD SYSOUT=X //CMPRT03 DD SYSOUT=X //CMPRT04 DD SYSOUT=X //CMPRT05 DD SYSOUT=X
VSE の場合を以下に示します。
// ASSGN SYS051,DISK,VOL=PACK01,SHR // DLBL CMPRT01,'PRINT.CMPRT01',0,SD // EXTENT SYS051,PACK01,1.0,SSSS,LLL // ASSGN SYS052,DISK,VOL=PACK01,SHR // DLBL CMPRT02,'PRINT.CMPRT02',0,SD // EXTENT SYS052,PACK01,1.0,SSSS,LLL // ASSGN SYS053,DISK,VOL=PACK01,SHR // DLBL CMPRT03,'PRINT.CMPRT03',0,SD // EXTENT SYS053,PACK01,1.0,SSSS,LLL // ASSGN SYS054,DISK,VOL=PACK01,SHR // DLBL CMPRT04,'PRINT.CMPRT04',0,SD // EXTENT SYS054,PACK01,1.0,SSSS,LLL // ASSGN SYS055,DISK,VOL=PACK01,SHR // DLBL CMPRT05,'PRINT.CMPRT05',0,SD // EXTENT SYS055,PACK01,1.0,SSSS,LLL
z/VM の場合を以下に示します。
"FILEDEF CMPRT01 DISK CMPRT01 LISTING A" "FILEDEF CMPRT02 DISK CMPRT02 LISTING A" "FILEDEF CMPRT03 DISK CMPRT03 LISTING A" "FILEDEF CMPRT04 DISK CMPRT04 LISTING A" "FILEDEF CMPRT05 DISK CMPRT05 LISTING A"
CMPRTnn ラベルと論理プリンタの割り当てについては、「プリンタの考慮事項」を参照してください。
プロファイルで定義されている 5 つのサブシステムのそれぞれで、ワークファイルに対して WRITE WORK または READ WORK を実行できる場合は、MPM JCL で次の定義を指定する必要があります。
z/OS の場合を以下に示します。
//CMWKF01 DD DISP=SHR,DSN=WORK.CMWKF01 //CMWKF02 DD DISP=SHR,DSN=WORK.CMWKF02 //CMWKF03 DD DISP=SHR,DSN=WORK.CMWKF03 //CMWKF04 DD DISP=SHR,DSN=WORK.CMWKF04 //CMWKF05 DD DISP=SHR,DSN=WORK.CMWKF05
VSE の場合を以下に示します。
// ASSGN SYS061,DISK,VOL=PACK01,SHR // DLBL CMWKF01,'WORK.CMWKF01',0,SD // EXTENT SYS061,PACK01,1.0,SSSS,LLL // ASSGN SYS062,DISK,VOL=PACK01,SHR // DLBL CMWKF02,'WORK.CMWKF02',0,SD // EXTENT SYS062,PACK01,1.0,SSSS,LLL // ASSGN SYS063,DISK,VOL=PACK01,SHR // DLBL CMWKF03,'WORK.CMWKF03',0,SD // EXTENT SYS063,PACK01,1.0,SSSS,LLL // ASSGN SYS064,DISK,VOL=PACK01,SHR // DLBL CMWKF04,'WORK.CMWKF04',0,SD // EXTENT SYS064,PACK01,1.0,SSSS,LLL // ASSGN SYS065,DISK,VOL=PACK01,SHR // DLBL CMWKF05,'WORK.CMWKF05',0,SD // EXTENT SYS065,PACK01,1.0,SSSS,LLL
z/VM の場合を以下に示します。
"FILEDEF CMWKF01 DISK CMWKF01 LISTING A" "FILEDEF CMWKF02 DISK CMWKF02 LISTING A" "FILEDEF CMWKF03 DISK CMWKF03 LISTING A" "FILEDEF CMWKF04 DISK CMWKF04 LISTING A" "FILEDEF CMWKF05 DISK CMWKF05 LISTING A"
注意:
z/VM マルチタスキングは、Adabas トリガとストアドプロシージャ機能をサポートするときに使用されます。 そのため、サンプルの RMTNUC EXEC に変更を加える必要があります。
/* Sample RMTNUC Exec */ /* */ Address COMMAND user.set = word('HT RT',cmsflag(cmstype)+1) "SET CMSTYPE HT" trce = 'OFF' htype = 'HT' interpret trace trce /* The following variable may have the following values: */ /* 'DISK' to spool a dump to the virtual printer & read to disk */ /* 'PRT' to spool a dump to the virtual printer */ /* 'NO' to suppress a dump */ dump = 'NO' /* */ dbid = '00052' restart = 'NO' if 'ARG'() = 1 then parse upper arg dbid restart . dbid = 'STRIP'(dbid) if dbid = '' then dbid = '00052' else dbid = 'RIGHT'(dbid,5,'0') signal on error interpret call adf || dbid 'ADANUC MULTI' trce htype pull . device if result = 99 then signal error /* */ errtype ='CMS' 'COPY RUNNUC CONTROL A RDV' || dbid 'CONTROL A ADANUC DDCARD A (REPLACE)' 'COPY RUNMULTI CONTROL A ADANUC DDCARD A (APPEND)' 'COPY RDB' || dbid 'CONTROL A ADANUC DDCARD A (APPEND)' 'COPY STP' || dbid 'CONTROL A ADANUC DDCARD A (APPEND)' If restart = 'RESTART' then 'COPY RUNDIB CONTROL A ADANUC DDCARD A (APPEND)' /* */ errtype ='DATADEF' /* 'DATADEF DDPRINT,DSN=NUC' || dbid'.DDPRINT,MODE=A' 'DATADEF DDDRUCK,DSN=NUC' || dbid'.DDDRUCK,MODE=A' */ 'DATADEF DDPRINT,DSN=.TEMP,UNIT=SFS,FNAME=NUC' || dbid',FTYPE=DDPRINT' 'DATADEF DDPRINT,DSN=.TEMP,UNIT=SFS,FNAME=NUC' || dbid',FTYPE=DDDRUCK' 'DATADEF DDCARD,DSN=ADANUC.DDCARD,MODE=A' select ; when dump = 'DISK' then 'DATADEF DUMP,DSN=ADANUC.DUMP,MODE=A' when dump = 'PRT' then 'DATADEF DUMP,UNIT=PRT' when dump = 'NO' then 'DATADEF DUMP,DUMMY' otherwise do say '.. Invalid dump request' signal error end end signal off error /*-----------------------------------------------------------------*/ /* Add the filedef's for Adabas triggers and stored procedures */ /*-----------------------------------------------------------------*/ "FILEDEF * CLEAR" /* Let's start clean */ /* Filedefs for Adabas triggers & stored procedures facility */ "FILEDEF TSPRT01 DISK TSPRT01 LISTING A" "FILEDEF TSPRT02 DISK TSPRT02 LISTING A" "FILEDEF TSPRT03 DISK TSPRT03 LISTING A" "FILEDEF TSPRT04 DISK TSPRT04 LISTING A" "FILEDEF TSPRT05 DISK TSPRT05 LISTING A" "FILEDEF CMPRT01 DISK CMPRT01 LISTING A" "FILEDEF CMPRT02 DISK CMPRT02 LISTING A" "FILEDEF CMPRT03 DISK CMPRT03 LISTING A" "FILEDEF CMPRT04 DISK CMPRT04 LISTING A" "FILEDEF CMPRT05 DISK CMPRT05 LISTING A" "FILEDEF CMWKF01 DUMMY" "FILEDEF CMWKF02 DUMMY" "FILEDEF CMWKF03 DUMMY" "FILEDEF CMWKF04 DUMMY" "FILEDEF CMWKF05 DUMMY" /* End of Filedefs for Adabas triggers & stored procedures facility */ /*---------------------------------------------------------------------*/ /* Now set the language file to SSFume */ /*---------------------------------------------------------------------*/ "SET LANGUAGE ( ADD SSF USER" "LOADMOD SSFRUN" "PROGMAP SSFRUN" 'SSFRUN' /* This will run ADARUN */ rcode = rc "EXECOS" 'FINIS * * *' Exit rcode error: 'SET CMSTYPE' origtype return 99
MPM JCL STEPLIB / JCS LIBDEF で適切なローカルライブラリを指定します。 次の項目を含めるようにします。
Adabas トリガとストアドプロシージャ機能は、Natural サブシステムを使用してユーザー作成のプロシージャを実行します。 これらのサブシステムは、サブタスクとして実行されます。最大で同時に 10 のサブシステムをアクティブにできます。 Natural サブシステムは、基本的にバッチ Natural ニュークリアスです。
サブタスクは、z/OS の場合は Adabas アドレススペースで、VSE の場合は Adabas パーティションで、z/VM の場合は Adabas リージョンで実行されます。 BS2000 の場合、サブタスクは Adabas と同じアドレススペースで実行されませんが、グループの共通メモリと P1 イベント処理を使用して Adabas ニュークリアスと通信する派生ジョブです。
Adabas 実行中のリソースの使用状況を最適化するために、Natural サブシステムで使用されるリソースを最小化するように Natural トリガドライバ(Natural ニュークリアスコンポーネント)を構成することが重要です。
Adabas のインストールの一部として、テープからデータセット ADAvrs.JOBS がロードされています。 その結果、次のサンプルがインストールされています。
注意:
サンプルを修正した場合は、別のライブラリに格納するようにしてください。そうしないと、今後のバージョンをインストールしたときに上書きされてしまいます。
Natural のインストールの一部として、データセット NATvrs.SRCE がロードされています。 ソースライブラリのメンバ NATOS/NATVSE/NAMBS2 には、バッチ Natural ドライバが含まれています。このバッチ Natural ドライバは、Adabas トリガとストアドプロシージャ機能でバッチ Natural ニュークリアスを作成するときに使用する必要があります。
Natural を環境非依存のニュークリアスと環境依存のニュークリアスの 2 つに分割することをお勧めします。 詳細は、Natural のインストールに関するドキュメントを参照してください。
環境非依存のニュークリアスは、"共有ニュークリアス" とも呼ばれ、オペレーティングシステムの共有エリア(BS2000 では "リエントラント" 部分)に配置されます。
z/OS 環境の場合、リンクパック域(LPA)、または拡張リンクパック域(ELPA)。
VSE の場合、共用仮想領域(SVA)。
BS2000 の場合、共通メモリプール(CMP)。
このようなオペレーティングシステムの特殊なエリアから実行することで、非依存ニュークリアスは、同じオペレーティングシステム内の複数のアドレススペース(またはパーティションやリージョン)から一般にアクセス(共有)することができます。
共有ニュークリアスの利点は、仮想ストレージの負荷軽減です。システム内にニュークリアスのコピーは 1 つしか存在しないためページングアクティビティが減少し、ZAP は 1 回しか適用されないためメンテナンスの手間も少なくなります。
環境依存のニュークリアスは、BS2000 の "フロントエンド" 部分とも呼ばれます。環境非依存部分を取り除いているため、サイズが大幅に縮小されています。バッチアドレススペース(またはパーティションやリージョン)にロードされ、特にトリガとストアドプロシージャで使用するように指定されています。
Adabas トリガとストアドプロシージャ機能で使用される Natural ニュークリアスは、NATPARM モジュールと STPDRV および STPRBE のエントリポイントが含まれる必要があります。
STPNAT モジュールとリンクしている必要があります。 リンクでは、オプション RENT または REUSE を使用しないでください。使用すると、予測できない結果が生じます。 また、ストアドプロシージャとトリガ(ADARUN SPT=YES)で使用される ADALNK ルーチンが、NOREUSE および NORENT でリンクされるようにします。そうでないと、予測できない結果が生じます。
リンクモジュールは、MPM JCL STEPLIB に連結されているライブラリに配置する必要があります。
Adabas トリガとストアドプロシージャ機能で使用される Natural ニュークリアスには、サンプルジョブ ASMPARM を使用して作成された専用の NATPARM モジュールが含まれる必要があります。
また、モジュール STPNAT を Natural リンクに追加してください。 詳細については、サンプルジョブ LNKBATCH を参照してください。
リンクモジュールは、MPM JCS LIBDEF に連結されているライブラリに配置する必要があります。
Adabas トリガとストアドプロシージャ機能で使用される Natural ニュークリアスは、サンプルジョブ TSPBLDM を使用して作成された専用の NATPARM モジュールが含まれる必要があります。 TSPBLDM EXEC などを使用して、Adabas トリガとストアドプロシージャ機能で使用する Natural ニュークリアスを作成します。 TSPBLDM EXEC では TSP$LOAD を呼び出すことに注意してください。TSP をサポートするための追加 INCLUDE が含まれています。
NAMBS2 マクロパラメータを ADACOM=ADABAS に設定します。
ライブラリの命名規則に従って、ASMPARM および ASMNTBS2 モジュールをカスタマイズします。 ASMPARM を使用して、NATPARM モジュールをアセンブルできます。 ASMNTBS2 モジュールは、Natural ドライバ NAMBS2 をアセンブルします。
次のモジュールを Natural にリンクします。
バッチ Natural ドライバがアセンブルされたら、LNKBATCH ジョブを使用してリンクします。
z/OS の場合は、ADAvrs.JOBS データセットのサンプルジョブ ASMNTOS を使用して、バッチ Natural ドライバをアセンブルします。
VSE の場合は、JCS のサンプル ASMNTVSE を使用します。 Natural ジョブ NATI055 も参照してください。
BS2000 の場合は、ADAvrs.JOBS ライブラリの ASMNTBS2 を使用します。
詳細は「NATPARM について」を参照してください。
メンバ STPNAT は、Adabas ロードライブラリで提供されており、3 つのエントリポイント STPDRV、STPRBE、および ADABAS があります。
STPNAT は ADAUSER を置換します。 STPNAT には、同じ Adabas エントリポイントがあり、ADAUSER の通常の機能のすべてを実行します。 また、トリガとストアドプロシージャ用に特化したロジックが含まれています。
次のように、NATPARM モジュールの CSTATIC パラメータ指定に STPDRV と STPRBE を組み込みます。
CSTATIC=(STPDRV,STPRBE)
VSE および z/VM 環境では、次のパラメータも指定します。
ADAPRM=ON EXTBUF=10 MT=0
次のように、NATPARM モジュールの CSTATIC パラメータ指定に STPNAT と SPAENA を組み込みます。
CSTATIC=(STPNAT,SPAENA)
手順 1 でアセンブルしたバッチ Natural ドライバをリンクするときは、手順 2 でアセンブルした NATPARM と STPNAT を組み込んで、Adabas トリガとストアドプロシージャ機能のバッチ Natural ニュークリアスを作成します。
Natural ニュークリアスのリンクデッキに INCLUDE STPNAT ステートメントが含まれ、通常の INCLUDE ADAUSER ステートメントが含まれていないことを確認します。 AOSASM モジュールは必要ありません。
ADAVrs.JOBS ライブラリで提供される LNKBATCH ジョブを関連のあるライブラリ用にカスタマイズし、ジョブを実行します。
Adabas 起動 JCL/JCS の REGION/SIZE パラメータにサイズ制限が設定されていないことを確認します。
オペレーティングシステムの設定時に、8 メガバイトなどのサイズ制限が指定されている可能性があります。
手順 3 で作成した Natural モジュールが、Adabas 初期化時に Adabas ニュークリアスにアクセスできるように、次のいずれかの操作を行います。
この Natural モジュールを Adabas ロードライブラリの MPM JCL steplib または joblib に配置します。
Natural ロードライブラリ(モジュールが格納されている)を Adabas MPM JCL steplib または joblib に連結します。
Adabas ロードライブラリ(データセット ADABAS.Vvr.LOAD)には、モジュール STPEND も格納されています。STPEND は、MPM JCL steplib のいずれかのライブラリ内に格納されている必要があります。
//STEPLIB DD DISP=SHR, DSN=ADABAS.Vvr.LOAD DD DISP=SHR, DSN=NATURAL.Vvr.LOAD
手順 3 で作成した Natural モジュールが、Adabas ニュークリアスの起動ジョブの LIBDEF SEARCH ステートメントで使用される Adabas ライブラリにリンクされるようにします。 Natural ライブラリ(フェーズが格納されている)を Adabas ニュークリアスの起動ジョブの LIBDEF SEARCH ステートメントに追加します。
Adabas ニュークリアスが次のステートメントで実行されるようにします。
/START-PROGRAM *M(&ADALIB,ADARUN),- / RUN-MODE=ADV(ALT-LIB=YES)
次のようにして、バッチニュークリアスが格納されているライブラリにアクセスします。
/SET-FILE-LINK DDLNKPAR,DDLNKPAR_file /SET-FILE-LINK BLSLIBnn,batch_natural_library
上記の意味は次に示すとおりです。
nn | 00~99。BLSLIB リンクカードで次に使用可能な番号 |
batch_natural_library | バッチ Natural ライブラリ |
DDLNKPAR_file | 次のステートメントが記載されたファイル
dbid は Adabas ニュークリアスのデータベース ID、idtname は Adabas ニュークリアス実行時の ID テーブル名 |
重要:
DDLNKPAR_file
は、一時ファイルにしてはなりません。
ストアドプロシージャとトリガ(ADARUN SPT=YES)で使用される ADALNK ルーチンが、NOREUSE および NORENT でリンクされるようにします。そうしないと、予測できない結果が生じます。
Natural パラメータモジュールで Natural ニュークリアスに指定された NATPARM 定義を使用して、Natural セッション用に環境を調整します。
Natural ニュークリアスコンポーネントを正常に実行するには、特定の NATPARM パラメータに適切な値を指定する必要があります。 詳細については、Natural のマニュアルを参照してください。
VSE および VM/CMS 環境では、ON に設定する必要があります。
要求やローカル環境の構成に応じて、ローカルバッファプールまたはグローバルバッファプールを使用します。
ローカルバッファプールを使用する場合、ユーザーが呼び出すプロシージャは、Natural セッション中はローカルバッファプールに残ることがあります。その結果、新しいコピーが無視される可能性があります。
グローバルバッファプールを使用する場合、できるだけ早くアクティブ化するために、プロシージャがグローバルバッファプールから削除されることがあります。
Natural トリガドライバは実行時システムのみである(開発システムではない)ため、プログラムの記述内容に応じて、さまざまなバッファを最小サイズに維持する ことができます。 例えば ESIZE をどの Natural プログラムでも使用できる最大 GDA サイズに設定できます。 Adabas トリガとストアドプロシージャ機能で使用される GDA のサイズは、12K です。
このパラメータは、非 Natural プログラムのダイナミックロードを制御します。 プロシージャは Natural ニュークリアスにリンクされるため、トリガとストアドプロシージャでは無条件で設定します。 デフォルト値は 5 です。
CSTATIC パラメータは、Natural に静的にリンクされているプログラムを制御します。 デフォルト値はありません。 このパラメータには、Adabas トリガとストアドプロシージャ機能で使用されるルーチンを指定する必要があります。
STPDRV | Natural トリガドライバ |
STPRBE | レコードバッファ抽出ルーチン |
SPAENA | データベースコマンドキューへのアクセスを可能にします(BS2000 のみ) |
デフォルトの DU=OFF では、アベンド時にメモリダンプが生成されません。 この設定により、Natural ESTAE がセッション中アクティブになります。 Natural ESTAE がアクティブな場合、すべてのプログラムアベンドがトラップされ、Natural セッションは終了するのではなく、再スタートします。 これは重要なパフォーマンスの考慮事項です。
デフォルトの DYNPARM=ON は、Natural の起動時に提供されるダイナミックパラメータを処理します。 各バッチ Natural サブシステムは、少なくとも 1 つのパラメータ(STACK=)を指定して起動されるため、このデフォルト設定を使用する必要があります。 詳細は「NATPARM のダイナミックな上書き」を参照してください。
ETA は、エラートランザクションプログラムです。 指定しないでください。 Adabas トリガとストアドプロシージャ機能では、独自の要件に従って、Natural セッションのエラートランザクションプログラムが設定されます。
注意:
Adabas トリガとストアドプロシージャ機能は、単独で 1500 バイトを使用します。そのため、ETA プログラムが GDA
で 4K を使用する場合の ESIZE は約 6K になります。
ETID が使用される場合、つまり ETID=' '(空白)を指定しない場合、各タスク(最大で 10 タスク)にユニークな ETID(Adabas ユーザー ID)を割り当てる必要があります。 Natural Security が使用され、かつ NATPARM 値が ETID に指定されていない場合、ライブラリプロファイルの RESTART オプションおよびユーザープロファイルの ETID オプションを "N" に指定することで、エラーメッセージ NAT3048 および NAT3009 を防ぐことができます。
VSE および z/VM 環境では、EXTBUF パラメータを 10 以上に設定します。 z/OS 環境で EXTBUF は必須ではありません。
バッチ Natural サブシステムは長時間に渡るトランザクションであるため、LE、LT、MADIO、MAXCL、および MT パラメータを制限付きで設定しないでください。 これらのパラメータを制限付きで設定すると、プロシージャの実行時にエラーが発生することがあります。この場合、トリガを起動したコマンドは、レスポンスコード 155 または 156 を受け取ります。
注意:
Adabas トリガプロファイルのタイムアウトパラメータによって、長時間に渡るプロシージャの問題は自動的に解決します。
または、DBA がプロシージャの実行でビジーなサブシステムをキャンセルすることもできます。
NTLFILE パラメータは、Adabas トリガファイルを指すようにコーディングする必要があります。 トリガファイルの論理ファイル番号は 154 です。 または、Natural NTLFILE パラメータを使用してダイナミックに上書きするように NTFILE パラメータを指定します。
PROFILE パラメータは指定しないでください。 このパラメータにより、すべての Natural コントロールブロックが初期化される前に、Adabas コールが発行されます。 それにより、ストアドプロシージャとトリガの初期化時に予期できない結果が生じます。
PROGRAM パラメータは指定しないでください。 このパラメータはバッチ Natural サブシステムの起動時に使用され、STPEND に設定されます。 このモジュールは Adabas トリガとストアドプロシージャのロードライブラリ内にあり、必要に応じてロードできるように MPM JCL steplib に追加する必要があります。
STACK パラメータは指定しないでください。 このパラメータはバッチ Natural サブシステムの起動時に使用され、Adabas トリガとストアドプロシージャ機能によって指定されます。
Natural ニュークリアスで指定される NATPARM 値は、Adabas トリガプロファイルを使用して、または Natural Security がインストールされている場合は Natural Security を使用して、ダイナミックに定義できます。
NATPARM パラメータの値は、Adabas トリガプロファイルから取得され、Natural サブシステムの初期化時に使用されます。 プロファイルで指定される NATPARM 値は、Natural ニュークリアスで指定される値を上書きします。
NATPARM の定義を修正する前に、「特殊な要件」を参照してください。 各 Natural サブシステムはさまざまなアプリケーションやファイルに関するトリガ要求を受け入れることができるため、Natural 環境を適切に設定することが重要です。
STACK パラメータを渡す必要があります。Natural サブシステムは、Natural トリガドライバの初期化後に Natural トリガドライバに制御を渡します。 STACK パラメータの値は次のように固定され、ユーザーからは変更できません。
STACK=(LOGON:SYSSPT;STP)
ここでは次の内容を表しています。
SYSSPT | インストール手順で、ストアドプロシージャアプリケーションに対して INPL が実行されたライブラリ。 これは、実行可能なプロシージャを格納するライブラリでもあります。 |
STP | Natural トリガドライバの起動ルーチンです。 |
その他のすべての NATPARM 値は、必要に応じてユーザーが設定する必要があります。
Natural セッションは、Adabas ニュークリアスがアクティブな限り、通常は実行し続けます。 したがって、各 Natural サブシステムは長時間に渡るタスクです。Natural セッションのリミットパラメータを適宜設定する必要があります。 Natural サブシステムの実行中は、セッション設定を修正できません。 ただし、特定のセッションパラメータは、通常の Natural プログラミングオプションと同様の方法でプロシージャを使用して修正できます。
バッチ Natural サブシステムでは、プリンタは常に CMPRINT ラベルとサブシステムの番号によって指定されます。 単一のアドレススペースで実行している場合は、競合を防ぐために CMPRINT に別の割り当てを設定する必要があります。複数の Natural サブシステムが実行中であり、それらのいずれか、またはすべてで、出力が実行される可能性があるためです。
さまざまなサブシステムで割り当てられたプリンタのオープンとクローズが行われている場合でも、これらが競合しないという保証はありません。 競合が発生すると、オペレーティングシステムでエラーが発生します。
例えば WRITE (nn)、PRINT (nn)、または DISPLAY (nn) オプションを使用する場合、"nn" はすべてのサブシステムに永続的に割り当てられた固有の番号です(CMPRINT の場合と異なる)。
サブシステム 01 で実行中のプロシージャが WRITE (01) を実行し、サブシステム 02 で実行中の別のプロシージャが WRITE (01) を実行すると、オペレーティングシステムでエラーが発生し、最終的には Natural からエラーを受け取ります。このような状況を防ぐ必要があります。
Natural サブシステムが起動すると、Adabas トリガドライバは、Adabas トリガプロファイルの "CMPRINT 割り当て" 定義に基づいてダイナミックなプリンタ割り当てを決定します。
トリガプロファイルの CMPRINT 割り当ては 1~6 バイトのフィールドで、MPM JCL のファイル割り当てと一致する必要があります。 このプリンタ割り当ては、サブシステムの起動時にサブシステムタスク番号の接頭辞として使用されます。
例えば、プリンタ TSPRT を指定する場合、サブシステム 01 と 02 では、MPM 起動 JCL/JCS でラベル TSPRT01 と TSPRT02 が定義されることが想定されます。
Adabas トリガとストアドプロシージャ機能は、バックグラウンドで実行されるサブタスクまたはサブシステムです。 複数の Natural サブシステムがあり、プロシージャを特定のサブシステムから実行されるようにすることは不可能です。情報の出力で WRITE、PRINT、または DISPLAY ステートメントが使用されるときに、CMPRINT がダイナミックに割り当てられるためです。
プロシージャに渡される PDA には、ユニークなサブシステム ID が含まれるため、DECIDE ステートメントを使用して CMPRT01~CMPRT31 に出力できるようになります。
DECIDE ON FIRST VALUE OF RQ-TASK /*check subsystem number VALUE '01' WRITE (1) NOTITLE NOHDR text VALUE '02' WRITE (2) NOTITLE NOHDR text VALUE '03' WRITE (3) NOTITLE NOHDR text VALUE '04' WRITE (4) NOTITLE NOHDR text VALUE '05' WRITE (5) NOTITLE NOHDR text NONE WRITE NOTITLE NOHDR text END-DECIDE
最後の例(NONE)では、CMPRINT ラベルのダイナミック割り当てで指定されたプリンタに出力されます。
サブシステム 01 で実行中のプロシージャが出力を実行する場合は、CMPRINT のダイナミック割り当てに出力することも、DECIDE ステートメントで示すように、MPM JCL/JCS で指定されるプリンタ 01(CMPRT01)に出力することもできます。
複数のプリンタが必要な場合は、出力ファイルの範囲を定義できます。 例えば Natural サブシステムが 5 つ定義されている場合、出力ファイルの範囲は CMPRT01~CMPRT05、または CMPRT06~CMPRT10 のように定義できます。
宣言しない場合、CMPRINT は SYSLST に書き込みます。 サブタスキングにより、次の構造で自動的にファイルを割り当てられます。
L.L.<db_task_number>.<natural_load_name>.<timestamp>
ここでは次の内容を表しています。
<db_task_number> | トリガおよびストアドプロシージャ機能を実行しているデータベースのタスク番号 |
<natural_load_name> | バッチ Natural モジュールの名前 |
<timestamp> | サブタスクが開始された時間を示す文字 |
CMWKFnn
"nn" は、ワークファイル番号です。
ワークファイルの使用方法は、若干の考慮が必要になる可能性があります。しかし、ワークファイルに対する読み書きがない場合は、ワークファイルを JCL/JCS に配置する必要はありません。
ワークファイルが必要な場合、競合が発生しないようにする方法を確立する必要があります。 プリンタの考慮と同様のことがワークファイルにも適用されます。
例えば、プロシージャの読み書き操作は、タスク番号、つまりプロシージャが実行される Natural サブシステムの番号に応じて、特定のワークファイルがターゲットとなる可能性があります。 この場合、タスク 01 は CMWKF01 を読み書きし、タスク 02 は CMWKF02 を読み書きします。
プロシージャが実行されているサブシステムを特定できるため、そのサブシステムに永続的に割り当てられているワークファイルを使用できます。
「プリンタの考慮事項」で説明するように、DECIDE ステートメントを使用して、このような割り当てを行えます。 プロシージャの使用方法によっては、別の解決方法を使用することもできます。
このセクションでは、ストアドプロシージャ使用時の Natural サブシステムの実行に関するセキュリティについて説明します。 Natural Security 環境で Adabas トリガとストアドプロシージャを使用するときの情報です。
Natural にログオンするときは、AUTO=ON と AUTO=OFF のどちらも使用できます。
AUTO=OFF を使用するときは、ユーザー ID とパスワードを指定し、Adabas トリガプロファイルの "NATSEC LOGON Required" の値で "Y" を指定する必要があります。 そうでないと、問題が発生します。
入力するパスワードとユーザー ID は可変でも固定でもかまいません。 可変名の場合は、値 ** を使用する必要があります。 値がユニークになるように、Natural サブシステム番号で置換されます。 例えば USER** と PSWD** を指定した場合、ユーザー ID とパスワードは、次のように生成されます(3 つのタスクがあるとします)。
タスク | ユーザー ID | パスワード |
---|---|---|
01 | USER01 | PSWD01 |
02 | USER02 | PSWD02 |
03 | USER03 | PSWD03 |
ユーザー ID は、ETID とバッチユーザー ID を考慮して、Natural Security に対して定義する必要があります。 同じユーザー ID が使用された場合は、レスポンスコード 9 または 48 が返され、Natural セッションは無効になります。 Natural サブシステムはすべて同時に実行されていて、それぞれ相互に独立している必要があることに注意してください。
AUTO=ON を使用するときは、ジョブ名または割り当てられたバッチユーザー ID が実際のログオン ID に使用されます。 タスクの最大数によっては、複数のユーザーがサインオンします。 Natural サブシステムが発行するレスポンスコード 9 または 48 を受け取らないようにするには、このことを考慮する必要があります。
ライブラリ SYSTRG を定義します。 起動パラメータを、SYSAOS からログオンするときは " "(空白)に設定し、ログオン画面から直接ログオンするときは "menu" に設定します。
ライブラリ SYSSPT を定義します。 Natural サブシステムは、このライブラリにログオンします。
どちらのライブラリにも起動、エラー、または再スタート設定を含めないでください。 これらの設定は、Adabas トリガとストアドプロシージャ機能の初期化時に自動的に確立されます。
ライブラリは保護できます。ただし、Adabas トリガプロファイルを使用して定義されたユーザーには、ログオンして必要な処理すべてを実行するのに十分な権限が必要です。 例えば、あるモジュールでサブシステムのユーザー ID を許可しないと、Natural トリガドライバがそのルーチンを呼び出したときにエラーが発生してしまうため、よい方法とは言えません。
Natural Security では、次のような特定の NATPARM 設定を上書きできます。
非アクティビティログオフリミット
トランザクション経過時間
CPU 時間(MT=)
最大 Adabas 呼び出し数(MADIO=)
Natural サブシステムは、複数の "サブトランザクション" を実行する長いトランザクションの 1 つです。 セキュリティの制限がこれらの 1 つ以上に設定されている場合、制限はそのセッションのすべてのプログラムに適用されます。
Adabas トリガとストアドプロシージャサブタスクに影響のある Natural Security パラメータの設定について次に説明します。
Error Program は指定しないでください。 エラーは、Adabas トリガとストアドプロシージャ機能によって内部的に処理されます。
トランザクションデータを格納するプロシージャが、異なるサブシステムから続いて呼び出されることがあります。 正しく動作するには、ルーチン GET TRANSACTION DATA がプロシージャの呼び出し元サブシステムを認識している必要があります。 これが問題となる場合、ユーザーは別の形式でデータ回復する方法を構築します。 レスポンスコード 9 または 48 を防ぐため、ETID オプションは慎重に使用してください。
Library Protection は必須ではありませんが、Adabas Online System ユーザーは SYSTRG にログオンできる必要があり、Natural トリガドライバは SYSSPT にログオンできる必要があります。
Natural サブシステムの実行時間が長時間にわたる場合があるため、制限を超えないように 0(ゼロ)を設定します。
Natural サブシステムの実行時間が長時間にわたる場合があるため、制限を超えないように 0(ゼロ)を設定します。
Natural サブシステムの実行時間が長時間にわたる場合があるため、制限を超えないように 0(ゼロ)を設定します。
Natural Security ユーザープロファイルには、n 日ごとにユーザーにパスワードの変更を要求するときに使用できるオプションがあります。 このオプションを使用する場合、Adabas トリガプロファイルの NATSEC パスワード も修正する必要があります。
指定しないでください。 再スタートは、Adabas トリガとストアドプロシージャ機能によって内部的に処理されます。
制限はありません。 Adabas トリガとストアドプロシージャ機能は、SYSSPT にログオンします。 そのため、すべてのプロシージャは必要に応じて steplibs 内にある必要があります。
指定しないでください。 Startup は、ログオン時に Adabas Online System または Natural トリガドライバによって自動に設定されます。