バージョン 4.2.5
 —  TP モニタインターフェイス  —

UTM 環境の Natural - パート 4

Natural UTM インターフェイスのドキュメントのこの部分では、次のトピックについて説明します。


Natural UTM アプリケーションのアカウンティング

Natural UTM アプリケーションでのリソース利用管理の向上を目的として、アカウンティングレコードをユーザー出口 ACCINIT および ACCEXIT によって利用可能にします。

どちらの場合でも、セッションの終了時にアカウンティングレコードが提供されます(FIN システムコマンドまたは TERMINATE ステートメント)。

アカウンティングレコードの構造

0 - 7 論理 UTM 端末名 DS CL8
8 - 15 ユーザー ID DS CL8
16 - 23 現在の Natural アプリケーション名 DS CL8
24 - 27 Adabas の呼び出しの数 DS F
28 - 31 累積メッセージ長 DS F
32 - 35 サブルーチンを含む Natural での経過時間(ミリ秒) DS F
36 - 37 出力するページ数 DS H
38 - 39 端末 I/O 転送の数 DS H
40 - 49 (ユーザーエリア) DS CL10
50 - 51 未使用 DS CL2
52 - 55 Adabas コマンドタイム(ミリ秒) DS F
56 - 63 最後のトランザクションプログラムの名前 DS CL8

アカウンティングレコードのユーザーエリアは、必要に応じて、追加的なアプリケーション固有のアカウンティング情報に使用することができます。 アカウンティングエリアは、ユーザー固有の UTM 通信エリア KB(Kommunikationsbereich)にあります。

UTM KB の現在のアドレスは、必要に応じて、マクロ NATUTM のエントリ CMKBADR で検出することができます。それ以外の場合、マクロ NATUTM のパラメータ KB のオペランドは YES に設定する必要があります。 この場合、Natural は通信エリアのアドレスをすべてのサブルーチン呼び出しの最初のパラメータとして渡します。

ユーザー出口ルーチン ACCEXIT は、アカウンティングレコードを Adabas ファイル、共有シーケンシャル PAM データセット、またはタスク固有の SAM データセットに保存することができます。 プログラム ACCEXIT では、アカウンティングレコードを保存する方法の例が示されます。「Software Exchange」を参照してください。

Top of page

UTM 環境の Natural で使用するユーティリティプログラム

UTM 環境の Natural で使用するためのユーティリティプログラムがいくつか提供されています。

これらのプログラムを使用する場合、次のルールが適用されます。

これらのユーティリティプログラムについて、以下で簡単に説明します。

NATDUE | INPTEX | NATPRNT | UTMTAC | TACSWTCH

インターフェイス、有効なパラメータ値、ロジックの概要などの詳細な情報は、それぞれのプログラムのメンテナンスログで確認できます。

ユーティリティプログラム NATDUE

プログラム NATDUE を使用すると、ユーザーが現在のダイアログステップにデータを入力したかどうか、単に EM/DÜ または が押されたのかを Natural プログラム内で確認することができます。

NATDUE を呼び出す場合、ユーティリティプログラム INPTEX を使用する必要があります。 プログラム INPTEX は、フォーマット出口モジュール FREXIT でユーザー出口 INPTEX に対応し、各ダイアログステップでデータが入力されたかどうかをチェックします。 このテストの結果に従って、それ以降プログラム NATDUE によるチェックの対象となるフラグが、通信エリア KB(Kommunikationsbereich)内で設定されます。

NATDUE を呼び出す Natural プログラムの例:

* PROG1 - EXAMPLE FOR CALLING THE SUBROUTINE 'NATDUE'  
RESET P1(A1) ...  
... 
INPUT USING MAP ...  
CALL 'NATDUE' P1  
IF P1 = 'Y' DO ...     /* INPUT FROM USER  
IF P1 = 'N' DO ...     /* NO INPUT FROM USER  
IF P1 = 'E' DO ...     /* ERROR  
...  
END

ユーティリティプログラム INPTEX

ユーティリティプログラム INPTEX は、フォーマット出口 FREXIT にある同じ名前のユーザー出口に対応します。

重要:
INPTEX は、Natural UTM アプリケーションのフロントエンド部分とリンクする必要があります。

注意:
このプログラムに変更を加える場合は(例えば端末画面の特定の行に入力されたデータを無視するようにするなど)、ユーザーの責任において行ってください。

このプログラムの機能は、各入力メッセージをチェックして、端末からの入力があるかどうか、または単に EM/DÜ または キーが押されただけなのかを確認することです。

マクロ NATUTM のパラメータ LINK または LINK2 でプログラム名 INPTEX を定義する必要はありません。

ユーティリティプログラム NATPRNT

プログラム NATPRNT は、ローカルプリンタの動作のために、次のような特別なサービス機能を提供しています。

ユーティリティプログラム UTMTAC

プログラム UTMTAC は Natural プログラムから呼び出すことができ、現在の UTM TAC を生成します。 このプログラムにより、中央の Natural プログラムは、Natural UTM アプリケーション内で UTM TAC 制御の "ナビゲーション" を実行できるようになります。

ユーティリティプログラム TACSWTCH

ユーティリティプログラム TACSWTCH は、Natural プログラム内から PEND PR(OGRAM) に UTM TAC をダイナミックに割り当てることができるマクロです。 指定された UTM TAC は、生成された UTM テーブルに対してチェックされ、適切に保存されます。 また、情報は PEND PR(OGRAM) に渡すことができます。 このユーティリティを使用するには、次の手順に従います。

  1. 有効な UTM TAC を定義して、TACSWTCH マクロをアセンブルします。

  2. 例えば、TACSWTCH TAC=(tac1,tac2,tac3,...tac n)。これらの TAC は、同様に KDCDEF で定義する必要があります。KDCROOT の生成に関しては、これらを対応する部分的な UTM プログラムに割り当てる必要があります。

  3. マクロ NATUTM のパラメータ LINKLINK4 でプログラム TACSWTCH を定義します。

  4. プログラム TACSWTCH を Natural UTM インターフェイスのフロントエンド部分にリンクします。

  5. インターフェイスの説明:CALL 'TACSWTCH' P1 [P2] P3

    P1 (A8) PEND PR に使用する UTM TAC が格納されます。
    P2 (A n) 指定は任意であり、PEND PR に対するメッセージの長さとデータが格納されます。

    P2 の構造:LLLDDD.....

    LLL メッセージ長(3 桁、長さフィールドなし)、最小長:000、最大長:160
    DDD メッセージエリア。
    P3 (A1) 2 つの機能があります。

    呼び出すとき、および P3 に値 G(Go)が含まれている場合に、PEND PR(OGRAM) が次の Natural 出力(INPUTWRITEDISPLAY)で実行されます。 PEND PR で Natural UTM インターフェイスを呼び出した後、中断されていた場所から Natural セッションが続行されます。つまり、最後の出力がユーザーに表示されます。

    制御が返されると、P3 には TACSWTCH からのリターンコードが格納されます。

    表示されるリターンコード:

    0 エラーなしで処理が実行されました。
    1 TAC テーブルで TAC が見つかりません。
    2 メッセージ長が 000 未満です。
    3 メッセージ長が 160 を超えています。
    エラーなしで TACSWTCH が呼び出された場合、FIN コマンドまたは TERMINATE ステートメントを実行するか、PEND PR のファンクションキーを押して、PEND PR(OGRAM) を実行することができます。パラメータ PRKEY を参照してください。

特殊な TACSWTCH 関数

次の値で最初の TACSWTCH パラメータを使用することができます。

説明
RESET 現在使用可能な UTM TAC がクリアされます。つまり、PEND FI でセッションが終了されます。
GETP データは、出力バッファから呼び出し元の Natural プログラムの容量が十分にあるデータエリアに移動されます。
GETU データは、KB ユーザー拡張から、呼び出し元の Natural プログラムの容量が十分にあるデータエリアに移動されます。

出力バッファまたは KB ユーザー拡張の最初の 2 バイト(フォーマット:2 進数)には、データ長(これらの最初の 2 バイトを含む)が格納される必要があります。

説明
PUTP データは、呼び出し元の Natural プログラムの容量が十分にあるデータエリアから、出力バッファに移動されます。
PUTU データは、呼び出し元の Natural プログラムの容量が十分にあるデータエリアから、KB ユーザー拡張に移動されます。

Natural プログラムのデータエリアの最初の 2 バイト(フォーマット:2 進数)には、データ長(これらの最初の 2 バイトを含む)が格納される必要があります。 最初の 2 バイトを含めて、データが移動されます。

PUTP および GETP の例:

DEFINE DATA LOCAL
01 P1(A8)                     /* FUNCTION CODE/UTM TAC
01 P2(A252)                   /* FIRST PART OF DATA AREA
01 REDEFINE P2
   02 P21(B2)                 /* DATA LENGTH INCLUDING FIRST TWO BYTES
   02 P22(A250)
01 A1(A250)                   /* SECOND PART OF DATA AREA
01 P3(N1)                     /* RETURN CODE
END-DEFINE
...                           /* PROGRAM LOGIC
MOVE 'PUTP' TO P1             /* MOVE FUNCTION CODE FOR TACSWTCH
MOVE 502 TO P21               /* MOVE TOTAL LENGTH OF DATA
CALL 'TACSWTCH' P1 P2 P3      /* PUT DATA INTO PRINT BUFFER
IF P2 NE 0                    /* RETURN CODE CONTROLLING
   DO...                      /* ERROR LOGIC
MOVE 'NAT1' TO P1             /* MOVE ADEQUATE UTM TAC
MOVE 'G' TO P3                /* EXECUTE PEND PR WITH TAC NAT1
CALL 'TACSWTCH' P1 P3
IF P3 NE 0                    /* RETURN CODE CONTROLLING
   DO...                      /* ERROR LOGIC
INPUT ' '                     /* DUMMY MESSAGE FOR DRIVER CONTROL

現在、Natural UTM ドライバが制御を取得しており、次のロジックで動作します。

  1. このドライバは、ダミーメッセージ(INPUT ' ')を無視します。

  2. 部分的な UTM プログラムの場合、LENGTH=0MPUT、および TAC 'NAT1'PEND PR です。

  3. 部分的な UTM プログラムは、出力バッファを通じて Natural プログラムデータを取得します。 出力バッファは UTM SPAB に配置され、出力バッファのアドレスは、UTM KB 内にあるフィールド 'KBAPBUFF' で定義されます。

  4. Natural UTM ドライバが制御を取得します(INIT/MGET)。

  5. Natural に対して、ONLY ENTER をシミュレートします。

  6. 次のように、Natural で処理を再開します。

MOVE 'RESET' TO P1           /* MOVE FUNCTION CODE FOR TACSWTCH
CALL 'TACSWTCH' P1 P3        /* RESET PEND PR TAC (NAT1)
IF P3 NE 0                   /* RETURN CODE CONTROLLING
   DO...                     /* ERROR LOGIC
MOVE 'GETP' TO P1            /* MOVE FUNCTION CODE FOR TACSWTCH
CALL 'TACSWTCH' P1 P2 P3     /* GET DATA FROM PRINT BUFFER
IF P3 NE 0                   /* RETURN CODE CONTROLLING
   DO...                     /* ERROR LOGIC
...                          /* PROGRAM LOGIC
END

マクロ NATUTM のパラメータ KBSAVEYES に設定した場合、呼び出された部分的な UTM プログラムは、UTM KB を使用することができます(ヘッダーの末尾に最初の 12 バイトを加えた位置から)。 この場合、UTM KB は SPUT で保存され(KB ヘッダーに最初の 12 バイトを加えた位置を始点とする)、SGET で更新されます。

Natural とその他の部分的な UTM プログラムの間で、トランザクションロジックに対して UTM トランザクションコードを定義する場合、次のルールが適用されます。

UTM の別の部分的なプログラムから Natural UTM ドライバに対して PEND PR を実行した場合、先行する開始 TAC が使用されない可能性があります。 Natural UTM ドライバが PEND PR によって呼び出されたという事実を認識できるのは、フィールド KCTACVG 内の先行する開始 TAC の内容がフィールド KCTACAL 内の現在の TAC と異なっている場合のみです (通常、フィールド KCTACVG には、ユーザーがアプリケーションの起動に使用した TAC が格納されます)。

Top of page

Software Exchange

Software AG のお客様は、Natural UTM アプリケーションで生じた特定のニーズに合わせてプログラムを開発してきました。 これらのプログラムは、"Software Exchange" を通じて関心のあるあらゆるユーザーに公開されています。 このことは、Software AG が開発し、特定の問題に対するサンプルソリューションとして示されたプログラムにも同様に適用されます。

これらのプログラムは無料でご利用いただけますが、Software AG によるメンテナンスは行われません。 各プログラムの完全なドキュメントは、通常、ソースリストのメンテナンスログに含まれています。

各プログラムについて、以下で簡単に説明します。

XAMDUSA | UTMCOB | UTMNAV | NUEXAMPL | ACCEXIT | TABMOD

プログラム XAMDUSA

このプログラムでは、呼び出し元の COBOL プログラムを対象として、現在のユーザー固有の WORKING-STORAGE SECTION が保存およびリストアされます。

これらの処理により、ユーザーが現在実行している UTM タスクにかかわりなく、テーブルなどユーザー固有のデータエリアに多くのダイアログステップでアクセスできるようになります。 データは、論理的/物理的にチェーンで結ばれた PAM-I/O を使用して PAM ファイルに保存されます。

プログラム UTMCOB

プログラム UTMCOB は、Natural UTM アプリケーション内にあるユーザー固有の部分的な UTM プログラムの例です。 この例はプログラムの基本的な論理構造を示し、部分的な UTM プログラムとして以下のことが可能です。

チェーンで結ばれた部分的な UTM プログラムの呼び出し」も参照してください。

プログラム UTMNAV

プログラム UTMNAV も、Natural UTM アプリケーション内にあるユーザー固有の部分的な UTM プログラムの例です。

プログラム UTMNAV では、UTM KB を "共通" ユーザーエリアとして使用する方法を例示します。

プログラム NUEXAMPL

プログラム NUEXAMPL は、ユーザー固有の部分的な UTM プログラムの例であり、Natural プログラムとデータを交換できます。 NUEXAMPL と呼び出し元の Natural プログラムのそれぞれのプログラムロジックは、NUEXAMPL のメンテナンスログで説明されています。

プログラム ACCEXIT

プログラム ACCEXIT は、アカウンティングデータを共有 ISAM データセットに保存するプログラムの例です。 Natural UTM インターフェイスのユーザー出口 ACCEXIT および SHUTEX2 が使用されます。 「Natural UTM アプリケーションのアカウンティング」も参照してください。

プログラム TABMOD

プログラム TABMOD は Natural プログラムから呼び出すことができ、次のような機能を実行します。

こうして、高い頻度で必要になるデータを一度だけストレージにロードし、その後は常駐データとして保持することができます。

TABMOD は、ライブラリ NUTnnn.MAC 内のマクロとして使用することができます。 このプログラムには、これ自体のインストールと利用に必要なあらゆる情報が含まれています。

Top of page

UTM TACCLASS の概念 - プライオリティ制御

Natural プログラムは、Natural UTM アプリケーション内で UTM TACCLASS の概念を利用することで、UTM TAC クラスを割り当ててリソースの制御を最適化できます。

Natural UTM アプリケーションを生成するとき、および Natural プログラムを作成するときは、以下の手順に従う必要があります。

手順 1:KDCDEF および KDCROOT 定義で UTM TAC と TAC クラスを指定する

例:

OPTION GEN=ALL,ROOTSRC=INPUT.KDCROOT.KDCNATP
ROOT KDCNATP
MAX APPLINAME=NATUTM,APPLIMODE=S,KDCFILE=(NATUTM,S)
MAX KB=400,SPAB=8192,NB=5120,TRMSGLTH=5120
MAX TASKS=10
MAX ASYNTASKS=3
...
EXIT PROGRAM=NUSTART,USAGE=START
EXIT PROGRAM=NUSTART,USAGE=SHUT
EXIT PROGRAM=FREXIT,USAGE=FORMAT
...
DEFAULT PROGRAM COMP=ASSEMB
PROGRAM NUSTART
PROGRAM FREXIT
PROGRAM NUERROR
PROGRAM KDCADM,COMP=SPL4
...
DEFAULT TAC TYPE=D,PROGRAM=NUSTART,EXIT=NUERROR,CALL=BOTH,...
TAC NAT,TIME=(3600000,5400),TACCLASS=1,...
TAC NAT1,TIME=(3600000,5400),TACCLASS=2,...
...
DEFAULT TAC TYPE=A,PROGRAM=NUSTART,EXIT=NUERROR,CALL=FIRST,...
TAC NATAS,TACCLASS=9
TAC NATAS1,TACCLASS=10
...
TACCLASS 1,TASKS=3
TACCLASS 2,TASKS=1
TACCLASS 9,TASKS=2
TACCLASS 10,TASKS=1
...
END

Siemens のドキュメント『UTM Generierung und AdministrationUTM Generation and Administration)』も参照してください。

定義された UTM TAC での注意事項

UTM TAC 説明
NAT これは、リソースの使用量が少ない同期トランザクション、つまり、短時間のトランザクション向けの UTM TAC です。
NAT1 これは、リソースの使用量が多い同期トランザクション、つまり、長時間のトランザクション向けの UTM TAC です。
NATAS これは、リソースの使用量が少ない非同期トランザクション向けの UTM TAC です。
NATAS1 これは、リソースの使用量が多い非同期トランザクション向けの UTM TAC です。

手順 2:UTM 開始ジョブの構造

ジョブ名は EN.NATUTM です。

例:

/.NATUTM LOGON Natural,E,,TIME=10000
/SYSFILE SYSOUT=PROT.UTMSTAT 
/FILE NATUTM.KDCA,LINK=KDCFILE 
/ERASE NATUTM.PRINTCONTROL 
/STEP 
/FILE LOG.NATUTM,LINK=SYSLOG 
/FILE NATUTM.SWAPFILE,LINK=PAMNAT,SHARUPD=Y
/SYSFILE TASKLIB=NAT210.MOD 
/.REPEAT EXEC NATUTM.E 
.UTM START FILEBASE=NATUTM
START TASKS=7
START ASYNTASKS=3
START STARTNAME=EN.NATUTM
.UTM END
/SKIP .REPEAT
/STEP 
/SYSFILE SYSOUT=(PRIMARY)
/STEP 
/SYSFILE SYSLST=(PRIMARY) 
/CAT NATUTM.PRINTCONTROL,SHARE=YES  
/PRINT LST.NATUTM.,SPACE=E 
/ERASE LST.NATUTM. 
/STEP 
/LOGOFF NOSPOOL

手順 3:Natural プログラムによって同期 トランザクションの TAC クラスを変更する

同期 UTM トランザクションの TAC クラスは、次のステートメントを指定した Natural プログラムで変更できます。

CALL  'NATTAC' operand1[operand2] [operand3]INPUT 'TACCLASS

上記の意味は次に示すとおりです。

operand1 S=n を指定する必要があります。この場合、S は "同期" を表し、n は整数値の 0~4 になります。この整数値は、同期 TAC に対するトランザクションコードのサブルーチン NATTAC のテーブルで、トランザクションのプライオリティレベルを表します。
n0 である場合、トランザクションコードのテーブルは使用されません。 使用する TAC は、NATTAC の呼び出し時に operand2 で明示的に渡されます。
n1~4 の値の場合、目的の TAC のプライオリティレベルは、適切なパラメータ TCLS1TCLS4(同期トランザクションの場合)、または TCLA1TCLA4(非同期トランザクションの場合)から取得されます。
サブルーチン NATTACoperand1 内でエラーを検出した場合、operand1 のエラーコードで呼び出し元のプログラムにすぐに制御が返されます。
E01 operand1 の最初の 2 文字は S= でも A= でもありません。
E02 operand1 の第 3 の文字は <0 または >4 です。
E03 Natural UTM アプリケーションの生成時に、指定したプライオリティレベルに対して、UTM TAC が定義されていませんでした。つまり、対応するパラメータ(TCLS n または TCLA n)の値が - になっています。
operand2 指定は任意です。 operand1 の第 3 の文字が 0 である場合、目的の TAC クラスに対して UTM TAC を指定する必要があります。
operand3 指定は任意です。 operand1 または operand2 で定義された UTM TAC で現在のユーザーのそれ以降のダイアログを実行する場合、値 Y を指定する必要があります。 NATTAC を呼び出したときに operand3 が省略されている場合、または operand3 の値が Y 以外になっている場合、最初の端末出力で現在のユーザーの START トランザクションコードが再び使用されます(標準的な機能)。 NATTAC を呼び出したときに operand3 の値が Y である場合、operand1(暗黙的)または operand2(明示的)に指定された UTM TAC で、現在のユーザーに指定されたその後の処理が実行されます。

ステートメント INPUT 'TACCLASS' は、端末 I/O を実行しません。このステートメントの機能は、TACCLASS の割り当ての制御のみです。

その代わり、Natural プログラムは、CALLNAT ステートメントで Natural サブプログラム NATTAC を呼び出すことができます。 このために、INPUT 'NATTAC' ステートメントが省略されます。オペランドは CALL ステートメントのオペランドと同じです(上記を参照)。

CALLNAT 'NATTAC' operand1[operand2] [operand3]

このプロシージャは、同期トランザクションでも非同期トランザクションでも使用できます。 NATTAC は、ライブラリ SYSTEM に含まれています。

例 1:

次の Natural プログラムは、UTM TAC を明示的に割り当てて新しい TAC クラスを指定し、次に START UTM TAC に指定を変更します。

* TACCLASS - EXAMPLE FOR A TACCLASS SWITCH 
RESET CONTROL(A3) NEWTAC(A8) NR(N3)
REDEFINE CONTROL (ERRFLD(A1))
INPUT 'TEST FOR A TACCLASS SWITCH - NEW TAC: NAT1' IFELD(A1)
MOVE  'S=0'  TO CONTROL           /* SYNCHR. TAC, EXPLICIT --> Note 1
MOVE  'NAT1' TO NEWTAC            /* SET NEW TAC           --> Note 2
CALL  'NATTAC' CONTROL NEWTAC     /* INVOKE TAC SWITCH     --> Note 3
IF ERRFLD = 'E' DO                /* ERROR CHECK           --> Note 4 
   DISPLAY 'ERROR' CONTROL 'FROM NATTAC'
   TERMINATE
   DOEND
INPUT 'TACCLASS'                  /* ACTIVATE NEW TAC      --> Note 5 
READ (50) AUTOMOBILES BY MAKE     /* NOW IN NEW TACCLASS   --> Note 6 
ADD 1 TO NR 
WRITE NOTITLE NOHDR NR MAKE MODEL /* START TAC IS USED     --> Note 7 
LOOP 
ON ERROR DISPLAY 'ERROR IN PROGRAM TACCLASS' 
END
 
1 S=0 は、それが同期トランザクションであり、TAC が CALL 'NATTAC' の第 2 パラメータで明示的に渡されることを表します。つまり、TAC テーブルは使用されません。
2 NATTAC への呼び出しのために、新しい TAC(NAT1)が設定されます。
3 NATTAC を呼び出すと、TAC クラスの変更が初期化されます。
4 サブルーチン NATTAC から制御が返された後、エラーチェックが実行されます。
5 擬似 MPUT および PEND PA が新しい TAC で実行されます。
6 プログラムは現在、NAT1 に対する TAC クラスで実行されています。
7 最初の端末出力が開始されると、START UTM TAC が再び有効になります。

この例では、UTM TAC NAT1 を使用して、AUTOMOBILE ファイルが読み取られます。 最初の端末出力が開始されると、START UTM TAC(NAT)が再び有効になります。

内部処理ロジック:

NATTAC が呼び出されると、TACCLASS の変更が保留になっていることを示すフラグが UTM 通信エリア(Kommunikationsbereich)に設定されます。

またプログラムによって渡される UTM TAC も、ユーザー固有の通信エリアに格納されます。 INPUT 'TACCLASS' の実行により、Natural からの端末出力が発生し、この出力に基づいて、UTM インターフェイスは新しい UTM TAC で MPUTPEND 'PA' を発行します(メッセージは、Natural UTM インターフェイス自体によって受信されます)。 新しい TAC クラスでメッセージを受信すると、TACCLASS 変更フラグがあるために、インターフェイスは入力エリアで ETX/DÜ のシミュレーションを実行します。 その後の処理は新しい TAC クラスで実行されます。

以前の NATTAC 呼び出しのオペランド値に基づいて、端末に最初に送信されるメッセージを利用すると、ユーザーの START UTM TAC で MPUTPEND 'PR' を発行することができます。つまり、TACCLASS の追加の変更が可能になります。

例 2:

次の Natural プログラムは、UTM TAC を明示的に割り当てて新しい TAC クラスを指定しますが、START UTM TAC への変更は行いません。

* TACCLAS1 - EXAMPLE FOR A TACCLASS SWITCH
RESET CONTROL(A3) NEWTAC(A8) SWOFF(A1)
INPUT 'TEST FOR A TACCLASS SWITCH - NEW TAC: NAT1' IFELD(A1)
MOVE  'S=0'  TO CONTROL             /* SYNCHR. TAC, EXPLICIT
MOVE  'NAT1' TO NEWTAC              /* SET NEW TAC
MOVE  'Y'    TO SWOFF               /* NO RESET TO START TAC
CALL  'NATTAC' CONTROL NEWTAC SWOFF /* INVOKE TAC SWITCH
INPUT 'TACCLASS'                    /* ACTIVATE NEW TAC
FETCH 'TACCLAS2'                    /* NOW IN NEW TACCLASS
END 
* TACCLAS2 - THIS PROGRAM IS FETCHED FROM PROGRAM TACCLAS1
RESET NR(N3)
READ (25) AUTOMOBILES BY MAKE       /* TACCLASS IS NAT1
ADD 1 TO NR
WRITE NOTITLE NOHDR NR MAKE MODEL HORSEPOWER YEAR
LOOP 
FETCH 'MAINMENU'                   /* TACCLASS = NAT1 
END

この例では、処理が TAC NAT1 で新しい TAC クラスに割り当てられます。 ユーザーの START UTM TAC への切り替えは、NATTAC の呼び出しで、第 3 のパラメータ(SWOFF)に値 Y を指定することで回避されます。

また 1 つの Natural プログラムで、複数の TACCLASS の変更を実行できます。

例 3:

次の Natural プログラムは、2 つの明示的な TACCLASS の変更と、1 つの暗黙的な TACCLASS の変更を実行します。

*TACMULT - EXAMPLE FOR TWO TACCLASS SWITCHES IN ONE PROGRAM
RESET CONTROL(A3) NEWTAC(A8) SWOFF(A1) NR(N4)
INPUT 'TEST FOR 2 TACCLASS SWITCHES' IFELD(A1)
MOVE  'S=0'  TO CONTROL                  /* SYNCHR. TAC, EXPLICIT
MOVE  'NAT1' TO NEWTAC                   /* SET NEW TAC
MOVE  'Y'    TO SWOFF                    /* NO RESET TO START TAC 
CALL  'NATTAC' CONTROL NEWTAC SWOFF      /* INVOKE TAC SWITCH 
INPUT 'TACCLASS'                         /* ACTIVATE NEW TAC 
READ (50) AUTOMOBILES BY MAKE            /* NOW IN NEW TACCLASS
ADD 1 TO NR 
WRITE NR MAKE MODEL YEAR 
LOOP 
EJECT                                    /* ACTIVATE NEW OUTPUT ***** 
MOVE  'S=0' TO CONTROL                   /* SYNCHR. TAC, EXPLICIT
MOVE  'NAT2' TO NEWTAC                   /* SET NEW TAC 
CALL  'NATTAC' CONTROL NEWTAC            /* INVOKE TAC SWITCH 
INPUT 'TACCLASS'                         /* ACTIVATE NEW TAC 
READ (100) AUTOMOBILES BY MAKE           /* NOW IN NEW TACCLASS 
WRITE MAKE MODEL YEAR                    /* NOW START TAC IS USED 
LOOP 
ON ERROR DISPLAY 'ERROR IN PROGRAM TACMULT' 
END

前記の例では UTM TAC NAT2 を考慮していません。これは KDCROOTKDCDEF で定義する必要があります。

WRITEPRINT、または DISPLAY ステートメントの後で明示的な TACCLASS の変更が実行された場合、新しい TAC を割り当てる前に EJECT を発行する必要があります。 この処理では、INPUT 'TACCLASS' の実行前に、端末に対して無条件の出力が実行されます。 EJECT の代わりに、次のステートメントを使用することができます。

STACK TOP DATA 'A' 
INPUT A(A1)

このシーケンスでも、INPUT 'TACCLASS' の実行前に、端末に対して無条件の出力が実行されます。

例 4:

次の Natural プログラムは、UTM TAC を暗黙的に割り当てて新しい TAC クラスを指定し、次に START UTM TAC に指定を変更します。 この例では、サブルーチン NATTAC 内で同期トランザクションに対して TAC テーブルを使用します。

* TACIMP1 - EXAMPLE FOR AN IMPLICIT TACCLASS SWITCH 
RESET CONTROL(A3) NR(N3) 
REDEFINE CONTROL (ERRFLD(A1)) 
INPUT 'TEST FOR AN IMPLICIT TACCLASS SWITCH' IFELD(A1) 
MOVE  'S=1' TO CONTROL                  /* USE 1ST TAC IN TABLE --> Note 
CALL  'NATTAC' CONTROL                  /* INVOKE TAC SWITCH 
IF ERRFLD = 'E' DO                      /* ERROR CHECK 
   DISPLAY 'ERROR' CONTROL 'FROM NATTAC' 
   TERMINATE 
   DOEND 
INPUT 'TACCLASS'                        /* ACTIVATE NEW TAC 
READ (100) AUTOMOBILES BY MAKE          /* NOW IN NEW TACCLASS 
ADD 1 TO NR 
WRITE NOTITLE NOHDR NR MAKE MODEL       /* START TAC IS USED 
LOOP 
ON ERROR DISPLAY 'ERROR IN PROGRAM TACIMP1' 
END

注:値 S=1 は、それが同期トランザクションであり、TAC が TAC テーブルの最初のエントリから取得されることを表します。 これは、パラメータ TCLS1 のオペランド値として定義された TAC です(デフォルト値:NAT1)。 CALL 'NATTAC' にある最初のパラメータの第 3 の文字は、4 つのパラメータ TCLS1TCLS4 のうちいずれを適用するかを示します。

例 5:

次の Natural プログラムは、UTM TAC を暗黙的に割り当てて新しい TAC クラスを指定しますが、次に START UTM TAC に指定を変更しません。 この例では、サブルーチン NATTAC 内で同期トランザクションに対して TAC テーブルを使用し、この TAC で処理を続行します。

* TACIMP2 - EXAMPLE FOR AN IMPLICIT TACCLASS SWITCH 
RESET CONTROL (A3) SWOFF(A1) NR(N3) 
REDEFINE CONTROL (ERRFLD(A1)) 
MOVE 'S=4' TO CONTROL                   /* USE 4TH TAC IN TABLE --> Note 
MOVE 'Y'   TO SWOFF                     /* NO RESET TO START TAC 
CALL 'NATTAC' CONTROL SWOFF             /* INVOKE TAC SWITCH 
IF ERRFLD = 'E' DO                      /* ERROR CHECK 
   DISPLAY 'ERROR' CONTROL 'FROM NATTAC' 
   TERMINATE 
   DOEND 
INPUT 'TACCLASS'                        /* ACTIVATE NEW TAC 
READ (100) AUTOMOBILES BY MAKE          /* NOW IN NEW TACCLASS 
ADD 1 TO NR 
WRITE NR MAKE MODEL YEAR 
LOOP 
ON ERROR DISPLAY 'ERROR IN PROGRAM TACIMP2' 
END

注:値 S=4 は、それが同期トランザクションであり、TAC が TAC テーブルの第 4 のエントリから取得されることを表します。 これは、パラメータ TCLS4 のオペランド値として定義された TAC です(デフォルト値:NAT4)。 KDCROOT および KDCDEF の例では、TAC NAT4 が定義されていません。実際に行うときは、ユーザーが適切な定義を指定する必要があります。

TAC テーブルを使用する場合、Natural プログラム内で UTM TAC を明示的にコーディングする必要がないという利点があります。 Natural プログラムには、実行するトランザクションの相対的なプライオリティの "重み" があるだけです。 システム管理者は、Natural プログラムを変更しなくても、UTM TAC の名前を割り当てたり変更したりすることができます。

同期トランザクションに対して TACCLASS を変更する Natural プログラムをテストする場合、注意すべきことがあります。TACCLASS 変更の適切な処理を確認する場合は、ステートメント CALL 'NATTAC' operand1 (operand2) (operand3) を指定しないで Natural プログラムをテストできるということです。 INPUT 'TACCLASS' ステートメントで端末に出力 'TACCLASS' のみが生成される場合、そのプログラムは適切に動作しています。 NATTAC の呼び出しのオペランドは、適切に設定する必要があります。 KDCROOT および KDCDEF に定義されていない UTM TAC が使用された場合、UTM 処理は常にエラーコード KM01 で終了します。

手順 4:1 つの Natural UTM アプリケーション内で非同期トランザクションに TAC クラスを割り当てる

Natural UTM アプリケーション内の非同期トランザクションに対する TAC クラスは、次のステートメントで変更できます。

CALL 'NATTAC'operand1[operand2]
operand1 A=n を指定する必要があります。この場合、A は "非同期" を表し、n は整数値の 04 になります。この整数値は、非同期 TAC に対するトランザクションコードのサブルーチン NATTAC のテーブルで、トランザクションのプライオリティレベルを表します。 オペランドの指定形式は、同期トランザクションのオペランドの指定形式に似ています。
operand2 指定は任意です。 operand1 の値が A=0 である場合、目的の TAC クラスに対して UTM TAC を指定します。

非同期トランザクションのすべての UTM TAC は、マクロ NATUTM のパラメータ ASYNTAC で非同期 TAC に対して一意な ID として定義した文字列で始まる必要があります。 逆に同期トランザクションに対する UTM TAC は、この文字列で開始することができません。

例 6:

次の Natural プログラムは、UTM TAC NATAS を使用して、非同期トランザクション処理のために初期化を実行します。 これは、非同期トランザクションに対する標準的な TAC です。 マクロ NATUTM のパラメータ ASYNTAC の説明も参照してください。

* STARTAS - EXAMPLE FOR ASYNCHRONOUS TRANSACTION WORKING 
*           WITHIN ONE APPLICATION - USING THE STANDARD TAC 
FORMAT LS=145
RESET PARM1(A144) PRDEST(A8) LTDEST(A8) 
MOVE 'PRINTER1' TO PRDEST 
MOVE *INITID TO LTDEST 
COMPRESS 'SENDER=' PRDEST ',OUTDEST=' LTDEST ',' 
         'MENU=F,STACK=(LOGON APPL1;READAUTO)' INTO PARM1 
         LEAVING NO 
CALL 'NATASYN' 
SET CONTROL 'H'
WRITE NOTITLE NOHDR PARM1
INPUT 'ASYNTASK INVOKED - HOPEFULLY' IFELD(A1)
END

例 7:

次の Natural プログラムは、非同期トランザクション処理を初期化し、別の TAC クラスに対する割り当てのために UTM TAC NATAS1 を割り当てます。

* STASTAC - EXAMPLE FOR ASYNCHRONOUS TRANSACTION WORKING 
*           WITHIN ONE APPLICATION 
*           AND SWITCH TO A NEW TACCLASS
FORMAT LS=145 
RESET PARM1(A144) PRDEST(A8) LTDEST(A8) CONTROL(A3) NEWTAC(A8) 
REDEFINE CONTROL (ERRFLD(A1)) 
MOVE 'PRINTER1' TO PRDEST 
MOVE *INIT-ID TO LTDEST 
COMPRESS 'SENDER=' PRDEST ',OUTDEST=' LTDEST ',' 
         'MENU=F,STACK=(LOGON APPL1;READAUTO)' INTO PARM1 
         LEAVING NO 
MOVE 'A=0'    TO CONTROL            /* ASYNCHR. TAC, EXPLICIT --> NOTE 
MOVE 'NATAS1' TO NEWTAC             /* SET NEW TAC 
CALL 'NATTAC' CONTROL NEWTAC        /* INVOKE TAC SWITCH 
IF ERRFLD = 'E' DO                  /* ERROR CHECK
   DISPLAY 'ERROR' CONTROL 'FROM NATTAC'
   TERMINATE
   DOEND
CALL 'NATASYN'                     /* INVOKE ASYNCHRONOUS TAC
SET CONTROL 'H' 
WRITE NOTITLE NOHDR PARM1 
INPUT 'ASYNTAC INVOKED - HOPEFULLY' IFELD(A1) 
END

A=0 は、それが非同期トランザクションであり、TAC が CALL 'NATTAC' の第 2 パラメータで明示的に渡されることを表します。つまり、TAC テーブルは使用されません。

MOVE 'A=1' TO CONTROL
CALL 'NATTAC' CONTROL

TAC テーブル(「NATUTM マクロパラメータ」のパラメータ TCLA1TCLA4 を参照)を使用するためのプロシージャは、同期トランザクションのプロシージャに対応しています。

非同期的に実行するプログラムの例(READAUTO):

* READAUTO - ASYNCHRONOUS Natural PROGRAM
READ (75) AUTOMOBILES BY MAKE
WRITE MAKE MODEL HORSEPOWER BODY-TYPE YEAR
LOOP
ON ERROR TERMINATE
TERMINATE
END

目的の UTM TAC は常に、非同期トランザクション処理を初期化する Natural プログラム内で割り当てられる必要があります(非同期トランザクション処理のために標準的な TAC を使用することは例外的な方法です。マクロ NATUTM のパラメータ ASYNTAC の説明を参照)。 非同期的に実行するプログラムは、次に目的の TAC クラスで実行されます。 各非同期 Natural プログラムは TERMINATE ステートメントで終了する必要があるので、プログラムの終了時に UTM DC トランザクションも終了されます(PEND 'FI')。

非同期トランザクション処理を初期化するプログラムは、常に同期トランザクション内で実行されます。 したがって、同期トランザクションのためのプロシージャを使用して TACCLASS を変更する処理は可能です。 この変更を実行できるのは、非同期 TAC を割り当てる前、または非同期トランザクションを初期化した後(INPUT ステートメント)です。

手順 5:2 つの Natural UTM アプリケーション間で非同期トランザクションに TAC クラスを割り当てる

2 つの Natural UTM アプリケーション間の非同期トランザクション処理のために NATTAC を呼び出す必要はありません。 必要な UTM TAC は、Natural プログラムで明示的に割り当てられます。「非同期トランザクション処理」も参照してください。

UTM TACCLASS の切り替え

次の図では、同期トランザクションのために UTM TACCLASS を切り替えるロジックを示します。

UTM TACCLASS Switch Logic

Top of page

Natural UTM アプリケーションの生成

次のプログラムとマクロは、Natural UTM アプリケーションを生成するためにアセンブルする必要があります。

KDCROOT UTM インターフェイスモジュール。
NATUTM Natural UTM インターフェイスのフロントエンド部分。
BS2STUB 共通メモリプールの定義。
FREXIT フォーマット出口モジュール(デフォルトパラメータを変更する場合のみ)。
NURENT Natural UTM インターフェイスのリエントラント部分。
NTPRM Natural パラメータモジュール。
NTSWPRM スワッププールパラメータモジュール。

このリストには、Natural UTM インターフェイスのユーティリティプログラムは含まれていません。

次に、アプリケーションを生成する方法の例を示します。

OPTION GEN=ALL,ROOTSRC=INPUT.KDCROOT.KDCNATP 
ROOT KDCNATP 
MAX APPLINAME=NATUTM,APPLIMODE=S,KDCFILE=(NATUTM,S) 
MAX KB=400,SPAB=8192,NB=5120,TRMSGLTH=5120 
MAX TASKS=10,ASYNTASKS=3 
MAX GSSBS=0,KSSBS=1 
MAX LOGACKWAIT=600,RESWAIT=(600,1200),TERMWAIT=(1800,0) 
MAX PGPOOL=(88,80,95),CONRTIME=2,RECBUF=(400,2048) 
MAX DPUTLIMIT1=(001,23,59,59),DPUTLIMIT2=(001,23,59,59) 
MAX LPUTLTH=0 
*+---------------------------------------------------------------------------+ 
*I              EXIT DEFINITIONS: STARTUP (CSECT NAME OF NATUTM)             I 
*I                                SHUTDOWN (CSECT NAME OF NATUTM)            I 
*I                                FORMAT (FREXIT)                            I 
*+---------------------------------------------------------------------------+ 
EXIT PROGRAM=NUSTART,USAGE=START 
EXIT PROGRAM=NUSTART,USAGE=SHUT 
EXIT PROGRAM=FREXIT,USAGE=FORMAT 
*+---------------------------------------------------------------------------+ 
*I                   P R O G R A M  D E F I N I T I O N S                    I 
*+---------------------------------------------------------------------------+ 
DEFAULT PROGRAM COMP=ASSEMB 
PROGRAM NUSTART 
PROGRAM FREXIT 
PROGRAM NUERROR 
PROGRAM AUTOTAC 
PROGRAM KDCADM,COMP=SPL4 
*+---------------------------------------------------------------------------+ 
*I          SYNCHRONOUS TACS FOR Natural/UTM                                 I 
*I          THE ERROR EXIT 'NUERROR' MUST BE DEFINED FOR EACH TAC            I 
*+---------------------------------------------------------------------------+ 
DEFAULT TAC TYPE=D,PROGRAM=NUSTART,EXIT=NUERROR,CALL=BOTH 
TAC NAT,ADMIN=NO,TIME=0 
TAC AUTOCONN 
*+---------------------------------------------------------------------------+ 
*I          BADTACS DEFINITION FOR Natural/UTM                               I 
*I          THE ERROR EXIT 'NUERROR' MUST BE DEFINED FOR EACH TAC            I 
*+---------------------------------------------------------------------------+ 
TAC KDCBADTC,CALL=FIRST,PROGRAM=AUTOTAC,EXIT=NUERROR,TYPE=D 
*+---------------------------------------------------------------------------+ 
*I          ASYNCHRONOUS TACS FOR Natural/UTM                                I 
*I          THE ERROR EXIT 'NUERROR' MUST BE DEFINED FOR EACH TAC            I 
*+---------------------------------------------------------------------------+ 
DEFAULT TAC TYPE=A,PROGRAM=NUSTART,EXIT=NUERROR,CALL=FIRST 
TAC NATAS 
TAC NATSY 
*+---------------------------------------------------------------------------+ 
*I          UTM ADMINISTRATOR TACS                                           I 
*+---------------------------------------------------------------------------+ 
DEFAULT TAC PROGRAM=KDCADM,ADMIN=Y,TYPE=D,CALL=BOTH 
TAC KDCTAC 
TAC KDCLOG 
TAC KDCSHUT 
TAC KDCAPPL 
TAC KDCINF 
TAC KDCUSER 
TAC KDCSEND 
TAC KDCDIAG 
TAC KDCLTERM 
TAC KDCPTERM 
TAC KDCSWTCH 
TAC KDCHELP
*+---------------------------------------------------------------------------+ 
*I          PTERM 9750 DEFINITION                                            I 
*+---------------------------------------------------------------------------+ 
DEFAULT PTERM PRONAM=VR,PTYPE=T9750,TERMN=FE,CONNECT=N
PTERM DFDSS001,LTERM=DF97501
PTERM DFDSS002,LTERM=DF97502
PTERM DFDSS003,LTERM=DF97503
*+---------------------------------------------------------------------------+ 
*I          LTERM DEFINITION                                                 I 
*+---------------------------------------------------------------------------+ 
DEFAULT LTERM USAGE=D,STATUS=ON,ANNOAMSG=YES,RESTART=YES
LTERM=DF97501
LTERM=DF97502
LTERM=DF97503
*+---------------------------------------------------------------------------+ 
*I          SFUNC DEFINITION                                                 I 
*+---------------------------------------------------------------------------+ 
SFUNC F1,RET=21Z
SFUNC F2,RET=22Z
SFUNC F3,RET=23Z
SFUNC F4,RET=24Z
SFUNC F5,RET=25Z
SFUNC K1,RET=26Z
SFUNC K2,RET=27Z
SFUNC K3,RET=28Z
SFUNC K4,RET=29Z
END

Siemens のドキュメント『UTM Generierung und AdministrationUTM Generation and Administration)』も参照してください。

Natural UTM インターフェイスの生成

  1. マクロ NATUTM のパラメータのオペランドは必要に応じて正しい値に設定し、その後にマクロ NATUTM をアセンブルしてください。

  2. NATUTM マクロコールの例:

    NUSTART NATUTM APPLNAM=NATUTM,           --> Note 1 - 
                   NUCNAME=NAT
    vrs
    
    ,           --> Note 2 - 
                   LINK=TACSWTCH             --> Note 3 -
                   PARMOD=24,                --> Note 4 - 
                   ROLLACC=UPAM-AS,          --> Note 5 - 
                   ROLLTSZ=180,              --> Note 6 - 
                   TERMTAB=(SWP,TERMNAME),   --> Note 7 - 
                   UMODE=(S,G)               --> Note 8
    1 Natural UTM インターフェイスのフロントエンド部分の CSECT 名は、NUSTART(デフォルト値)として指定されます。 Natural UTM アプリケーションの名前は NATUTM として指定されます。
    2 Natural UTM アプリケーションのリンクエディットされたリエントラント部分の名前は NATvrs として指定されます。これは、リエントラント部分がロードされる共通メモリプールの名前でもあります。
    3 プログラム TACSWTCH に対して、TABLE マクロコールが実行されます。 つまり、このプログラムは、Natural UTM アプリケーションのフロントエンド部分でリンクする必要があります。
    4 Natural UTM アプリケーションは、24 ビットアドレッシングモードで実行されます。
    5 Natural ロールファイルに対するアクセス方法は、非同期書き込みに対して P1 イベント制御を使用する UPAM として指定されます。
    6 Natural ロールファイルの最大スレッドサイズは 180(KB)として指定されます。
    7 内部の端末コントロールテーブルは、Natural スワッププール内に割り当てられます。端末コントロールテーブル内のエントリを識別するために、論理端末名が使用されます。
    8 Natural とのユーザーダイアログは "シングル" モードで実行されます。つまり、1 つの端末で 1 つの Natural セッションを開始することができます。 再スタート時やログオフ時のメッセージ、またフリーランニングメッセージ(非同期処理)は、ドイツ語で出力されます。

    デフォルト値が適用されるので、マクロ NATUTM のその他のパラメータのオペランドは指定されません。

  3. マクロ NURENT(Natural UTM インターフェイスのリエントラント部分)をアセンブルします。 この例では、パラメータの変更は必要ありません。 アセンブルされたマクロ NURENTCSECT 名は NURENT です。

  4. マクロ ADDON に指定された共通メモリプール定義でマクロ BS2STUB をアセンブルします。

  5. Natural パラメータモジュールをアセンブルします。 サンプル NTPRM マクロコールは、ローカルの環境に合わせて調整する必要があります。

  6. スワッププールパラメータモジュール(マクロ NTSWPRM)をアセンブルします。

リエントラントではないフロントエンド部分とリエントラント部分のリンク

Natural UTM アプリケーションのフロントエンド部分とリエントラント部分は、提供された JCL を使用してリンクできます。 JCL を使用する前にこの JCL をチェックし、ローカル環境(ライブラリ名など)に合わせて、JCL を適切に変更する必要があります。 JCL の特別な機能は、REMARK ステートメントで示しています。

Natural ロールファイルの設定

Natural スワップファイルのサイズを計算して、このファイルをリンク名 PAMNAT で割り当てる必要があります。

Natural UTM アプリケーションの開始ジョブ

Natural UTM アプリケーションを開始する JCL の例が提供されています。 JCL を使用する前にこの JCL をチェックし、JCL を適切に変更する必要があります(UTM 起動パラメータ、データセット名など)。

Top of page

Natural UTM アプリケーションの最適化

Natural UTM アプリケーションのパフォーマンスが不十分である場合、次のようなポイントを考慮してください。

これらの推奨事項を考慮するときは、利用可能なストレージ、ストレージページング率、ディスクやチャネルの I/O トラフィックの負荷など、システム環境全体の要素を計算に入れる必要があります。

Top of page

複数のアプリケーションと 1 つの共通 Natural

Natural の『オペレーション』ドキュメントの「BS2000/OSD 環境での Natural 共有ニュークリアス」も参照してください。

ストレージスペースを節約するには、共通の Natural リエントラント部分をクラス 6 ストレージの共通メモリプールに格納し、いくつかの Natural UTM アプリケーションでこれを共有することをお勧めします。 Natural UTM アプリケーションを生成するときは、次の手順を実行する必要があります。

詳細については、Natural の『オペレーション』ドキュメントの「CMPSTART プログラム」を参照してください。

注意:

  1. NATSHARE は、リンクされる Natural リエントラント部分の名前です。 また、共通メモリプールの名前でもあります。
  2. パラメータ PFIX のオペランドは YES にする必要があります。
  3. パラメータ ADDR のオペランドを定義する必要があります。
  4. パラメータ LIBR のオペランドには、Natural リエントラント部分のロード元となるモジュールライブラリの名前を指定する必要があります。
  5. Natural UTM ドライバのリエントラント部分(マクロ NURENT のアセンブルされたモジュール)は、いくつかのアプリケーションのフロントエンド部分とリンクする必要があります。
  6. パラメータ NUCNAME のオペランドは、マクロ NATUTM の各アセンブリに対して同じように定義する必要があります(この例では、NUCNAME=NATSHARE)。
  7. マクロ BS2STUB のアセンブリに対する ADDON マクロ内の Natural ロードプールの定義は、すべてのアプリケーションに対して同じにする必要があります。例えば、次のように指定します。
    STUBSHAR BS2STUB PARMOD=31,PROGMOD=ANY ADDON NAME=NATSHARE,STAT=GLOBAL

詳細については、Natural の『オペレーション』ドキュメントの「ADDON マクロ」を参照してください。

共有パラメータモジュールとアプリケーション固有のパラメータモジュールのリスト

アプリケーション固有の Natural パラメータモジュールを使用する場合、これらを Natural UTM アプリケーションのフロントエンド部分にリンクする必要があります。つまり、それぞれのフロントエンド部分にパラメータモジュールがあります。 これはスワッププールパラメータモジュールにも適用されます。

ここでは、フロントエンド部分のパラメータモジュールの CSTATIC リストに定義されるアドレスのみを考慮しています。これらのアドレスがリエントラント部分を参照していることが原因でフロントエンド部分で解決できない場合、Natural はリエントラント部分のパラメータモジュールにある CSTATIC リストでこれらのアドレスを解決しようとします。 したがって、アドレスをリエントラント部分で解決できる場合、フロントエンド部分とリンクするときに、未解決の CSTATIC アドレスが残される可能性があります。

リエントラント部分の CSTATIC リストは、フロントエンド部分で解決できないアドレスだけを対象として使用するので、使用するすべての CSTATIC エントリ(フロントエンド部分にあるか、リエントラント部分にあるかに関係なく)は、本来、フロントエンド部分のパラメータモジュールの CSTATIC リストに定義する必要があります。

Top of page

ダイナミック Natural パラメータの入力と定義

Natural ダイナミックパラメータの入力と定義では、次のことを実行できます。

Top of page

UTM ユーザーの再スタート

Natural セッションを開始すると、定義された Natural ダイナミックパラメータは、最大で、マクロ NATUTM でパラメータ SVDYPRM のオペランドに定義された長さまで保存されます。 ユーザーの再スタートの状況では、Natural セッションが再び開始されたとき、これらの保存されたデータが自動的に再利用されます。 また、UTM の別の部分的なプログラムの PEND PR(OGRAM) の結果、Natural セッションが開始される場合も同様です。

Natural の『オペレーション』ドキュメントの「UTM 環境下の再スタート可能なグローバルスワッププール」も参照してください。

Top of page

Adabas プライオリティ制御

Adabas のプライオリティ制御と BS2000/OSD のプライオリティ制御には関連性がありません。 BS2000/OSD のプライオリティ制御とは異なり、Adabas の場合は、プライオリティ値が高いほど優先度も高くなります。 Adabas コマンドキューに同時に複数の要求が格納されている場合、最高のプライオリティ値を持つ要求が Adabas によって最初に処理され、その時点でコマンドキューにある他の要求のプライオリティに 1 が加算されます。

状況によっては、UTM タスクよりも低い BS2000/OSD プライオリティを Adabas タスクに割り当てる方が有効な場合もあります。

UTM トランザクションに対する Adabas プライオリティを制御するには、次の NATUTM マクロパラメータを使用することができます。

ADAPRI UTM トランザクションに対して Adabas プライオリティ制御をアクティブ化します。
APRISTD プライオリティが個別に割り当てられていないすべての UTM トランザクションに対して、標準的な Adabas プライオリティを割り当てます。
TCLS n 個々の同期 UTM トランザクションに対して、Adabas プライオリティを割り当てます。
TCLA n 個々の非同期 UTM トランザクションに対して、Adabas プライオリティを割り当てます。

UTM トランザクションに対して Adabas プライオリティ制御をアクティブにした場合(パラメータ ADAPRI=YES)、この設定はサブルーチン ADACALL で Adabas にアクセスする Natural 以外のプログラムにも適用されます。マクロ NATUTM の パラメータ ADACALL を参照してください。

上記のパラメータで異なるトランザクションに異なる Adabas プライオリティを定義し、同時に、UTM TACCLASS の概念を取り入れることで、非常に高度なプライオリティ制御システムを設定できます。 ただし、Adabas プライオリティを UTM トランザクションに明示的に割り当てる場合は、Adabas が他の処理(例えば、TIAM やバッチ処理)に割り当てる標準的なプライオリティも考慮する必要があります。

Top of page