ユーザーズ・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

バッチ・ランタイムの使用方法

 


構成ファイル

構成ファイルはバッチ・ランタイムのCONFディレクトリ内に実装されます。

BatchRT.conf

このファイルには変数の定義が含まれます。

このような変数はバッチ・ランタイムを使用する前に設定する必要があります。

Messages.conf

このファイルにはRTBatchによって使用されるメッセージが含まれます。

メッセージはローカル言語に翻訳できます。

FunctionReturnCode.conf

このファイルには、メッセージに関連付けられた内部コードが含まれます。

ReturnCode.conf

このファイルには、メッセージに関連付けられKSHスクリプトに返されるリターン・コードが含まれます。

 


環境変数を設定する

ORACLE_SIDCOBDIRLIBPATHCOBPATHなど、いくつかの変数は、様々なコンポーネントで共有されている変数なので、現在のドキュメントでは説明しません。Rehosting Workbenchのインストレーション・ガイドを参照してください。

表3-1には、KSHスクリプトで呼び出され、ソフトウェアを使用する前に定義されている必要がある環境変数が一覧表示されています。

表3-1 KSHスクリプトの環境変数
変数
使用方法
DATA
永久ファイルのディレクトリ。
TMP
一時アプリケーション・ファイルのディレクトリ。
SYSIN
sysinが保存されるディレクトリ。
MT_JOB_NAME
バッチ・ランタイムによって管理されるジョブ名。
MT_JOB_PID
バッチ・ランタイムによって管理されるジョブのPID (プロセスID)。

表3-2には、バッチ・ランタイムで呼び出され、ソフトウェアを使用する前に定義されている必要がある環境変数が一覧表示されています。

表3-2 Oracle Tuxedo Application Runtime for Batchの環境変数
変数
使用方法
PROCLIB
変換フェーズ中に使用されるPROCおよびINCLUDEファイルのディレクトリ。
MT_ACC_FILEPATH
AccLockおよびAccWaitファイルを格納するファイル同時実行性アクセスのディレクトリ。これらのファイルは、バッチ・ランタイムを実行する前に空の状態で作成する必要があります(BatchRT.conf構成ファイルを参照してください)。
MT_COBOL
使用されるCOBOLに従って次を含める必要があります。
- MicroFocusの場合、「COBOL_MF」
- CobolITの場合、「COBOL_IT」
(BatchRT.conf構成ファイルを参照してください)
MT_CTL_FILES
m_DBTableLoad関数によって使用される制御ファイル(CTL)のディレクトリ(ORACLEではsqlldr、UDBではloadとexport)。
MT_DB
ターゲット・データベースに従って次を含める必要があります。
- ORACLE 11gの場合、「DB_ORACLE」
- UDB 9.1の場合、「DB_DB2LUW」
(BatchRT.conf構成ファイルを参照)
MT_DB_LOGIN
データベース接続ユーザー。
MT_FROM_ADDRESS_MAIL
「-f」オプションを省略するときにm_SendMail関数によって使用されるFrom-Address。
MT_FTP_TEST
転送を実行するまたは実行しない(テスト・モード)ためにm_Ftp関数によって使用される変数。
MT_KSH
使用される「ksh」のパス(pdkshまたはksh88のみ)
MT_LOG
Logsディレクトリ(TuxJesを使用しない)。
MT_ROOT
バッチ・ランタイム・アプリケーションがインストールされるディレクトリ。
(BatchRT.conf構成ファイルを参照)
MT_SMTP_PORT
m_Smtpおよびm_SendMail関数によって使用されるポート(デフォルトではlocalhost)。
MT_SMTP_SERVER
m_Smtpおよびm_SendMail関数によって使用されるサーバー(デフォルトでは25)。
MT_SORT
使用されるSORTに従って次を含める必要があります。
- MicroFocusソート・ユーティリティの場合、「SORT_MicroFocus」
- SyncSortソート・ユーティリティの場合、「SORT_SyncSort」
- citsortユーティリティの場合、「SORT_CIT」
(BatchRT.conf構成ファイルを参照)
MT_SYSOUT
Sysoutディレクトリ(TuxJesを使用しない)。
MT_TMP
一時内部ファイルのディレクトリ。
(BatchRT.conf構成ファイルを参照してください)。

 


スクリプトの作成

スクリプトの一般的な構造

Oracle Tuxedo Application Runtime for Batchは、ジョブの異なる実行フェーズが明確に識別されるスクリプト・モデルを提案することによって、Kornシェル・スクリプトを正規化します。

Oracle Tuxedo Application Runtime for Batchスクリプトは、固有の書式を尊重することで、KSH(JOB)の異なるフェーズの定義とチェイニングを可能にします。

バッチ・ランタイム内のフェーズは、ソース・システム上のアクティビティまたは手順に対応します。

フェーズはラベルによって識別され、次のフェーズによって区切られます。

各フェーズの終わりでJUMP_LABEL変数が更新され、次に実行されるフェーズのラベルを提供します。

次の例では、最後の機能フェーズが、JUMP_LABELJOBENDに設定します。このラベルにより、ジョブの正常終了(フェーズ・ループを終了)が可能になります。

表3-3に示されているように、スクリプトの必須の部分(最初と最後の部分)は太字で表示され、スクリプトの機能部分(中間の部分)は通常の書式で表示されます。スクリプトのオプションの部分には、次に示すように、ラベル、分岐および手順の終了が含まれる必要があります。変更されるスクリプトの項目は、斜体で表示されます。

表3-3 スクリプトの構造
スクリプト
説明
#!/bin/ksh#
 
m_JobBegin -j JOBNAME -s START -v 2.00
m_JobBeginは必須で、少なくとも次のオプションを含む必要があります。
  • -j: 内部ジョブ名
  • -s: 実行を開始する最初のラベルの名前(通常はSTARTのはず)
  • -v: このスクリプトに必要な、バッチ・ランタイムの最小バージョン番号(上位互換)。
while true ;do
「while true; do」ループは、1つの手順から次の手順への移行をシミュレーションする機構を提供します。
m_PhaseBegin
m_PhaseBeginは、手順の最初でパラメータを初期化できるようにします。
case ${CURRENT_LABEL} in
case文は、現在の手順への分岐を可能にします。
(START)
開始ラベル(m_JobBeginの-sオプションで使用)
JUMP_LABEL=STEP1
JUMP_LABELはすべての手順に必須で、次の手順の名前を指定します。
;;
「;;」は手順を終了するもので、必須です。
(STEP1)
機能の手順は(LABEL)で開始されます。ここで、LABELは手順の名前です。
m_*
m_*
典型的な手順では、バッチ・ランタイム関数に対する一連の呼び出しに続きます。
JUMP_LABEL=STEP2
次の手順への分岐(JUMP_LABEL=)が常に存在します。
;;
そして各手順の終わりには常に「;;」があります。
(PENULTIMATESTEP)
 
m_*
m_*
機能の最後の手順は、他と同じ書式ですが、次の点のみ異なります。
JUMP_LABEL=END_JOB
;;
(END_JOB)
END_JOBを参照する必要のあるラベルのためです。「_」が必須ですが、これはこの文字がz/OS上で禁じられているためです。
break
;;
(*)
この手順は、処理ループをブレークされるようにします。
m_RcSet ${MT_RC_ABORT:-S999} "Unknown label : ${CURRENT_LABEL}"
break
;;
esac
これは、不明な手順への分岐をあらゆる場合に捕捉する手順です。
m_PhaseEnddone
m_PhaseEndは、配置とリターン・コードに従って、ファイル管理を含む手順の終了を管理します。
m_JobEnd
m_JobEndは、一時ファイルを整理して、ジョブ呼出し側に完了コードを戻すジョブの終了を管理します。

スクリプト例

リスト3-1に、Kornシェル・スクリプトのサンプルを示します。

リスト3-1 Kornシェル・スクリプト例
#!/bin/ksh
#@(#)--------------------------------------------------------------
#@(#)-  
m_JobBegin -j METAW01D -s START -v 1.00 -c A
while true ;
do
       m_PhaseBegin
       case ${CURRENT_LABEL} in
(START)
# -----------------------------------------------------------------
#  1) 1st Step: DELVCUST
#     Delete the existing file.
#  2) 2nd Step: DEFVCUST
#     Allocates the Simple Sample Application VSAM customers file
# -----------------------------------------------------------------
#
# -Step 1: Delete...
       JUMP_LABEL=DELVCUST
       ;;
(DELVCUST)
       m_FileAssign -d OLD FDEL ${DATA}/METAW00.VSAM.CUSTOMER
	m_FileDelete ${DD_FDEL}
       m_RcSet 0
#
# -Step 2: Define...
       JUMP_LABEL=DEFVCUST
       ;;
(DEFVCUST)
# IDCAMS DEFINE CLUSTER IDX
       m_FileBuild -t IDX -r 266 -k 1+6 ${DATA}/METAW00.VSAM.CUSTOMER
       JUMP_LABEL=ENDJOB
       ;;
(ABORT)
       break
       ;;
(ENDJOB)
       break
       ;;
(*)
       m_RcSet ${MT_RC_ABORT} "Unknown label : ${JUMP_LABEL}"
       break
       ;;
esac
m_PhaseEnd
done
m_JobEnd
#@(#)--------------------------------------------------------------

記号の定義と使用

記号は内部スクリプト変数で、スクリプト文を簡単に修正できるようにします。リスト3-2で示すように、m_SymbolSet関数によって値が記号に割り当てられます。記号を使用するには、次の構文を使用します: $[symbol]

注意: 中カッコ({})のかわりに大カッコ([])を使用するのは、記号と標準のKornシェル変数を明確に区別するためです。
リスト3-2 記号の使用例
(STEP00)
       m_SymbolSet VAR=40
       JUMP_LABEL=STEP01
       ;;
(STEP01)
       m_FileAssign -d SHR FILE01 ${DATA}/PJ01DDD.BT.QSAM.KBSTO0$[VAR]
       m_ProgramExec BAI001    

プログラムを実行する手順の作成

手順(フェーズとも呼ばれる)は、普通は、機能(またはテクニカル)アクティビティの実行を可能にするバッチ・ランタイム関数に対する呼出しの、一貫性の取れたセットです。

最もよく使用される手順は、アプリケーションまたはユーティリティ・プログラムを実行するものです。これらの種類の手順は、通常、1つ以上のファイル割当て操作と、それに続く、目的のプログラムの実行で構成されます。ファイル割当て操作はすべて、リスト3-3に示すプログラム実行操作に先行する必要があります。

リスト3-3 アプリケーション・プログラム実行手順の例
(STEPPR15)
	m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBPRO099
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBPRO001
       m_OutputAssign -c “*” SYSOUT
	m_FileAssign -i LOGIN
IN-STREAM DATA
_end
       m_FileAssign -d MOD LOGOUT ${DATA}/PJ01DDD.BT.QSAM.KBPRO091
	m_ProgramExec BPRAB001 "20071120"
	JUMP_LABEL=END_JOB
       ;;    

プロシージャの作成

Oracle Tuxedo Application Runtime for Batchには、プロシージャを定義して、使用するために一連の関数が用意されています。これらのプロシージャは、一般に、z/OS JCLのプロシージャと同じ原則に従います。

プロシージャの利点は、次のとおりです。

プロシージャには、2つのタイプがあります。

ストリーム内プロシージャの作成

z/OS JCL規則とは異なり、ストリーム内プロシージャは主要JOBの末尾の後に記述する必要があります。つまり、ジョブに属するすべてのストリーム内プロシージャは、関数m_JobEndの呼出しの後に出現する必要があります。

Kornシェル・スクリプトのストリーム内プロシージャは、常にまずm_ProcBegin関数を呼び出し、次にプロシージャを構成するすべてのタスクが続き、m_ProcEnd関数を呼び出して終了します。リスト3-4はサンプルです。

リスト3-4 ストリーム内プロシージャの例
m_ProcBegin  PROCA
       JUMP_LABEL=STEPA
       ;;
(STEPA)
       m_FileAssign -c “*” SYSPRINT
	m_FileAssign -d SHR SYSUT1 ${DATA}/PJ01DDD.BT.DATA.PDSA/BIEAM00$[SEQ]
       m_FileAssign -d MOD SYSUT2 ${DATA}/PJ01DDD.BT.QSAM.KBIEO005
       m_FileLoad ${DD_SYSUT1} ${DD_SYSUT2}
       JUMP_LABEL=ENDPROC
       ;;
(ENDPROC)
m_ProcEnd  

外部プロシージャの作成

外部プロシージャはm_ProcBeginm_ProcEnd関数の使用を必要としません。単にリスト3-5に示すプロシージャの一部をなすタスクをコーディングするだけです。

プロシージャのコードと呼出しジョブの統合を簡素化するには、常に、プロシージャの先頭を次のようにします。

       JUMP_LABEL=FIRSTSTEP
       ;;
(FIRSTSTEP)

末尾は次のようにします。

       JUMP_LABEL=ENDPROC
       ;;
(ENDPROC)
リスト3-5 外部プロシージャの例
JUMP_LABEL=PR2STEP1
       ;;
(PR2STEP1)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBPRI001
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBPRO001
       m_OutputAssign -c “*” SYSOUT
       m_FileAssign -d SHR LOGIN ${DATA}/PJ01DDD.BT.SYSIN.SRC/BPRAS002
       m_FileAssign -d MOD LOGOUT ${DATA}/PJ01DDD.BT.QSAM.KBPRO091
       m_ProgramExec BPRAB002
       JUMP_LABEL=ENDPROC
       ;;
(ENDPROC)

プロシージャの使用

Kornシェル・スクリプト内部のプロシージャの使用は、m_ProcInclude関数の呼出しを介して行われます。

「スクリプト実行フェーズ」で説明したとおり、Kornシェル・スクリプトは、変換フェーズで、m_ProcInclude関数の呼出しのたびに、プロシージャのコードをインクルードして展開されます。この操作の結果として展開されたKornシェル・スクリプトは、操作後も、「スクリプトの一般的な構造」で定義された、スクリプトの一般的な構造のルールを依然として尊重している必要があります。

リスト3-6に示した上記の原則が尊重されていれば、ストリーム内プロシージャまたは外部プロシージャを、呼出しジョブのいかなる場所でも使用できます。

リスト3-6 m_ProcInclude関数の呼出し例
(STEPPR14)
       m_ProcInclude BPRAP009
       JUMP_LABEL=STEPPR15

実行時のプロシージャ変更

プロシージャ内で定義されているタスクの実行は、2つの異なる手段で変更できます。

リスト3-7およびリスト3-8はサンプルです。

リスト3-7 プロシージャの定義例
m_ProcBegin  PROCE
       JUMP_LABEL=STEPE
       ;;
(STEPE)
	m_FileAssign -d SHR SYSUT1 ${DATA}/DATA.IN.PDS/DTS$[SEQ]
       m_FileAssign -d MOD SYSUT2 ${DATA}/DATA.OUT.PDS/DTS$[SEQ]
       m_FileLoad ${DD_SYSUT1} ${DD_SYSUT2}
	JUMP_LABEL=ENDPROC
       ;;
(ENDPROC)
m_ProcEnd 
リスト3-8 プロシージャの呼出し例
(COPIERE)
       m_ProcInclude PROCE SEQ="1"
       JUMP_LABEL=COPIERF
       ;;

ファイル割当てでのオーバーライドの使用

「ベスト・プラクティス」で規定されているとおり、プロシージャをコーディングするこの方法は、主にz/OS JCL変換の結果として得られるKornシェル・スクリプトをサポートするために用意されており、ターゲット・プラットフォーム用に新しく作成されるKornシェル・スクリプトでは推奨されません。

ファイル割当てのオーバーライドは、プロシージャに存在する割当ての置換を指定するm_FileOverride関数を使用して行われます。m_FileOverride関数の呼出しは、呼出し側スクリプト内のプロシージャ呼出しに続いて行われる必要があります。

リスト3-9は、m_FileOverride関数を使用して論理ファイルSYSUT1の割当てを置換する方法を示しています。

リスト3-9 m_FileOverride関数の例
 m_ProcBegin  PROCE
       JUMP_LABEL=STEPE
       ;;
(STEPE)
	m_FileAssign -d SHR SYSUT1 ${DATA}/DATA.IN.PDS/DTS$[SEQ]
       m_FileAssign -d MOD SYSUT2 ${DATA}/DATA.OUT.PDS/DTS$[SEQ]
	m_FileLoad ${DD_SYSUT1} ${DD_SYSUT2}
       JUMP_LABEL=ENDPROC
       ;;
(ENDPROC)
	"m_ProcEnd 
	"
リスト3-10 m_FileOverrideプロシージャの呼出し
(COPIERE)
       m_ProcInclude PROCE SEQ="1"
	m_FileOverride -i -s STEPE SYSUT1
Overriding test data
_end
	JUMP_LABEL=COPIERF
       ;;

"

 


スクリプトの動作の制御

手順実行の条件付け

m_CondIf、m_CondElseおよびm_CondEndifの使用

スクリプト内で1つまたは複数の手順の実行を条件付けるために、m_CondIfm_CondElseおよびm_CondEndif関数を使用できます。動作は、z/OS JCL文のコンストラクト、IFTHENELSEおよびENDIFと類似しています。

リスト3-11に示すように、m_CondIf関数は、常に関係式をパラメータとして持つ必要があります。この関数は、15回までネストできます。

リスト3-11 m_CondIf、m_CondElseおよびm_CondEndifの例
(STEPIF01)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF000
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF001
       m_ProgramExec BAX001
       m_CondIf "STEPIF01.RC,LT,5"
       JUMP_LABEL=STEPIF02
       ;;
(STEPIF02)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF001
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF002
       m_ProgramExec BAX002 
       m_CondElse
       JUMP_LABEL=STEPIF03
       ;;
(STEPIF03)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF000
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF003
       m_ProgramExec BAX003
       m_CondEndif

m_CondExecの使用

m_CondExec関数は、手順の実行を条件付けるために使用されます。m_CondExecは、少なくとも1つの条件をパラメータとして持つ必要があり、同時に複数の条件を持つこともできます。複数の条件の場合、手順は、すべての条件が満たされる場合のみ実行されます。

条件は、次の3つの形式が可能です。

リスト3-12に示すように、m_CondExec関数は、関係する手順の中で最初に呼び出される関数である必要があります。

リスト3-12 複数の条件を持つm_CondExecの例
(STEPEC01)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF000
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF001
       m_ProgramExec BACC01
       JUMP_LABEL=STEPEC02
       ;;
(STEPEC02)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF001
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF002
       m_ProgramExec BACC02 
       JUMP_LABEL=STEPEC03
       ;;
(STEPEC03)
       m_CondExec 4,LT,STEPEC01 8,GT,STEPEC02 EVEN
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF000
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIF003

実行フローの制御

スクリプトの実行フローは、次の方法で、決定および制御できます。

デフォルト・エラー・メッセージの変更

バッチ・ランタイム管理者がデフォルト・メッセージを変更する場合(たとえば言語を変更する場合)、環境変数MT_DISPLAY_MESSAGE_FILEでパスが指定された構成ファイルを介して行うことができます。

このファイルは、区切り記号としてセミコロンを使用するCSVファイルです。このファイルの各レコードには、特定のメッセージが記載され、6つのフィールドで構成されます。

  1. メッセージ識別子。
  2. メッセージを表示できる関数(「*」を使用すると汎用名も可能です)。
  3. 表示のレベル。
  4. 表示先。
  5. 将来使用するために予約されたフィールド。
  6. 表示されるメッセージ。

 


ファイルの使用

ファイル定義の作成

ファイルはm_FileBuildまたはm_FileAssign関数を使用して作成されます。

次の4つのファイル組織がサポートされます。

作成されるファイルのファイル構成を指定する必要があります。索引編成ファイルの場合は、長さと主キーの仕様も記述する必要があります。

m_FileBuildの例

m_FileAssignの例

ファイルの割当てと使用

バッチ・ランタイムを使用する場合、バッチ・ランタイム関数(m_FileSortm_FileRenameなど)またはプログラム(COBOLプログラムなど)でファイルを使用できます。

どちらの場合も、ファイルを使用する前に、先に割り当てる必要があります。ファイルは、次のことを行うm_FileAssign関数を使用して割り当てられます。

m_FileAssign関数を介して定義される環境変数は、DD_IFNと命名されます。この命名規則は、Micro Focus Cobolが内部ファイル名を外部ファイル名にマップするために使用する変数であるという事実に基づいています。

割当てが済んだファイルは、${DD_IFN}変数を使用することにより、ファイルを処理するバッチ・ランタイム関数のいずれかに、引数として渡すことができます。

COBOLプログラムの場合は、リンクはMicro Focus Cobolによって暗黙的に作成されます。

リスト3-13 ファイル割当ての例
(STEPCP01)
       m_FileAssign -d SHR INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIDI001
       m_FileAssign -d SHR OUTFIL ${DATA}/PJ01DDD.BT.VSAM.KBIDU001
       m_FileLoad ${DD_INFIL} ${DD_OUTFIL}
リスト3-14 COBOLプログラムによるファイル使用の例
(STEPCBL1)
       m_FileAssign -d OLD INFIL ${DATA}/PJ01DDD.BT.QSAM.KBIFI091
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBIFO091
       m_ProgramExec BIFAB090 

世代ファイル(GDG)の使用

z/OSメインフレームにはあるが、UNIX標準ではない世代ファイルの概念を再現するために、バッチ・ランタイムは、一連の関数を用意してこの種のファイルを取り扱います。

世代ファイルの定義

GDG(世代データ・グループ)ファイルは、m_GenDefine function関数を介して定義されます。指定する唯一のパラメータは、ディスク上に保持するバージョンの数の最大値です。

m_GenDefine -s 31 ${DATA}/PJ01DDD.BT.GDG

注意: m_GenDefine関数はGDGファイルを定義するために必須ではありません。リスト3-15で示されるように、GDGファイルは9999を限度として作成されます。

リスト3-15 世代ファイルの使用例:
(STEP03)
       m_FileAssign -d SHR SYSUT1 ${DATA}/PJ01DDD.BT.FILE1
       m_FileAssign -d NEW,CATLG -g +1 SYSUT2 ${DATA}/PJ01DDD.BT.GDG
       m_FileRepro -i SYSUT1 -o SYSUT2

世代ファイルの使用

m_FileAssign関数には、割り当てるファイルを世代ファイルとして指定し、目的のファイル・バージョンをリスト3-16どおりに設定する特別なパラメータ(-g)があります。

リスト3-16 世代ファイルの使用例
(STEPDD05)
       m_FileAssign -d SHR -g +1 INFIL ${DATA}/PJ01DDD.BT.GDG
       m_FileAssign -d MOD OUTFIL ${DATA}/PJ01DDD.BT.QSAM.KBDDO002
       m_ProgramExec BDDAB001 

世代グループの指定

m_FileAssign関数は、GDGのすべての世代を指定するために使用できます。

リスト3-17で示すように、SORT関数にはAP.GDGという名前のGDGファイルのすべての世代が含まれます。

リスト3-17 GDGファイルの例
(PT0010)
       m_FileAssign -d SHR SORTIN ${DATA}/APP.GDG
       m_FileAssign -d NEW,CATLG,DELETE SORTOUT ${DATA}/AP.GDG.SORT
	m_FileAssign -i SYSIN
SORT FIELDS=COPY
_end
       m_FileSort -s SYSIN -i SORTIN -o SORTOUT

ストリーム内ファイルの使用

データがKornシェル・スクリプトに直接書き込まれるファイルを定義して使用するには、-iパラメータを指定してm_FileAssign 関数を使用します。デフォルトでは、文字列_endリスト3-18で示されるようにストリーム内フローの「最終」デリミタです。

リスト3-18 ストリーム内データの例
(STEP1)
	m_FileAssign -i INFIL
data record 1
data record 2
_end

一連の連結ファイルの使用

一連のファイルを連結入力として使用するには、リスト3-19に示すように-Cパラメータを指定して m_FileAssign関数を使用します(z/Os JCLでは、最初の1つだけがラベルを含むDDカードとしてコーディングされていました)。

リスト3-19 連結された一連のファイルの使用例
(STEPDD02)
	m_FileAssign -d SHR INF ${DATA}/PJ01DDD.BT.QSAM.KBDDI002
	m_FileAssign -d SHR -C ${DATA}/PJ01DDD.BT.QSAM.KBDDI001
	m_ProgramExec BDDAB001 

外部sysinの使用

実行するコマンドを含む外部sysinファイルを使用するには、m_UtilityExec関数を使用します。

	m_FileAssign -d NEW SYSIN ${SYSIN}/SYSIN/MUEX07
	m_UtilityExec

ファイルの削除

ファイル(世代ファイルを含む)は、m_FileDelete関数を使用して削除できます。

m_FileDelete ${DATA}/PJ01DDD.BT.QSAM.KBSTO045

RDBファイル

z/OsからUNIX/Linuxへの移行プロジェクトでは、一部の恒久データ・ファイルが関係表に変換される場合があります。Oracle Tuxedo Application Runtime Workbenchの、ファイルからOracleへの変換に関する章を参照してください。

ファイルが関係表に変換される場合、この変更はそれを使用するコンポーネントに影響を与えます。具体的には、そのようなファイルがz/Os JCLで使用されると、そのJCLに対応する変換済Kornシェル・スクリプトが、このファイルを含む操作を取り扱うことができなくてはなりません。

変換されたKornシェル・スクリプトを、可能なかぎり標準的にしておくために、この変更は変換プロセスでは処理されません。かわりに、この種のファイルのすべての管理は、バッチ・ランタイム内で実行時に行われます。

つまり、z/OS JCLに、変換されるファイルが関係するファイル・コピー操作があった場合、バッチ・ランタイムではファイルの標準コピー操作に変換されます(つまりm_FileLoad操作)。

表に変換されたファイルの管理は、RDBファイルを介して可能になります。RDBファイルは、表に変換されたファイルと名前が同じで、接尾辞.rdbが追加されたファイルです。

ファイル関連の関数がバッチ・ランタイムによって実行されるたびに、対応する.rdbファイルが存在するかどうかをテストして、ファイルが表に変換されたことを確認します。関係するファイルのいずれかが表に変換された場合、関数は必要な中間操作(表をファイルにアンロードして再ロードするなど)を実行し、その後で最終的なアクションを実行します。

この管理の全ては、エンド・ユーザーに対して透過的です。

RDBMS接続の使用

RDBMSに接続する必要があるアプリケーション・プログラムを実行する場合、m_ProgramExec関数を呼び出すときに-bオプションを使用する必要があります。

接続と切断(およびコミットとロールバック操作)は、バッチ・ランタイムによって暗黙的に処理され、次の2つの方法を使用して定義できます。

MT_DB_LOGINの値は、dbuser/dbpasswd[@ssid]または「/」という形式でなければなりません。

注意: RDBMSが、データベース接続ユーザーに対してUNIX認証を使用でき、RDBMS認証を使用できないように構成されている場合は「/」を使用する必要があります。
注意: 「/」を使用するべきかどうかは、データベース管理者に確認してください。

リスト3-20に示すように、実行される主プログラムはRDBMSを直接使用しないが、その後に続くサブプログラムのいずれかが使用する場合は、-bオプションも使用する必要があります。

リスト3-20 RDBMS接続の例
(STEPDD02)
   m_FileAssign -d MOD OUTF ${DATA}/PJ01DDD.BT.QSAM.REPO001
   m_ProgramExec -b DBREP001 

m_ProgramExec関数は、3種類の実行可能ファイル(COBOL実行可能ファイル、コマンド言語スクリプト、またはC実行可能ファイル)を送信できます。これによって、runbプログラムが起動されます。

runbプログラムは、データベース・ライブラリを使用してコンパイルされたランタイムで、runbatchプログラムを実行します。

runbatchプログラムには次の役割があります。

- データベースへの接続の実行(必要に応じて)

- ユーザー・プログラムの実行

- コミットまたはロールバックの実行(必要に応じて)

- データベースへの接続切断の実行(必要に応じて)

 


INTRDRファシリティを使用したジョブの発行

INTRDRファシリティによって、sysoutのコンテンツをTuxJESに送信できます(TuxJESドキュメントを参照してください)。TuxJESが存在しない場合、コマンド「nohup EJR」が使用されます。

例:

m_FileAssign -d SHR SYSUT1 ${DATA}/MTWART.JCL.INFO

m_OutputAssign -w INTRDR SYSUT2

m_FileRepro -i SYSUT1 -o SYSUT2

${DATA}/MTWART.JCL.INFOファイルのコンテンツ(ddname SYSUT1)は、ddnameがSYSUT2のファイルにコピーされ、オプション「-w INTRDR」の使用が送信されます。

出力ファイルには有効なksh構文が含まれる必要がありますのでご注意ください。

 


EJRを使用したジョブの送信

バッチ・ランタイムを使用する場合は、TuxJESを使用してジョブを起動できます(TuxJESのドキュメントを参照)が、EJRスポーナを使用してジョブを直接実行することもできます。

この種の実行を行う前に、全体のコンテキストが正しく設定されていることを確認します。これには、バッチ・ランタイムが必要とする環境変数やディレクトリも含まれます。

EJRを使用してジョブを起動する例:

# EJR DEFVCUST.ksh 

EJRスポーナの完全な説明は、『Oracle Tuxedo Application Runtime for Batchリファレンス・ガイド』を参照してください。

 


LOGファイルの構造

バッチ・ランタイムは、起動された各ジョブに対して、実行された各手順(フェーズ)の情報を含むログ・ファイルを作成します。このログ・ファイルには、リスト3-21で示されるように、次の構造体が含まれます。

リスト3-21 ログ・ファイルの例
JOB Jobname BEGIN AT 20091212/22/09 120445
BEGIN PHASE Phase1
Log produced for Phase1 
.......
.......
.......
END PHASE Phase1 (RC=Xnnnn, JOBRC=Xnnnn)
BEGIN PHASE Phase2
Log produced for Phase2 
.......
.......
.......
END PHASE Phase2 (RC=Xnnnn, JOBRC=Xnnnn)
..........
..........
BEGIN PHASE END_JOB
..........
END PHASE END_JOB (RC=Xnnnn, JOBRC=Xnnnn)
JOB ENDED WITH CODE (C0000})

または

JOB ENDED ABNORMALLY WITH CODE (S990})

TuxJesを使用しない場合、ログ・ファイルは、<Job name>_<TimeStamp>_<Job id>.logという名前で ${MT_LOG}ディレクトリ配下に作成されます。

詳細は、Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。

 


ジョブ・スケジューラでのバッチ・ランタイムの使用

一部の関数(m_JobBeginm_JobEndm_PhaseBeginm_PhaseEnd)には、選択されたジョブ・スケジューラとの関係で行われる特定のアクションを挿入するためのエントリ・ポイントが用意されています。

 


SQLリクエストの実行

SQLリクエストは、m_ExecSQL関数を使用して実行できます。

ターゲット・データベースに従い、この関数はORACLEデータベースでは「sqlplus」コマンドを実行し、UDBでは「db2 -tsx」コマンドを実行します。

環境変数MT_DB_LOGINを設定する必要があります(データベース接続ユーザー・ログイン)。

SYSINファイルにはSQLリクエストを含める必要があり、ユーザーはデータベース・ターゲットに関するコンテンツを検証する必要があります。


  先頭に戻る       前  次