Oracle Tuxedo Rehostingプラットフォームは、ツール(Oracle Tuxedo Application Rehosting Workbench)とランタイム・コンポーネント(Oracle Tuxedo Application Runtime for CICS and Batch)から構成される、パッケージ化された包括的なソリューションで、これによりユーザーは次のことができます。
ランタイム・コンポーネントが移行されたシステムのライフサイクル全体で使用されるのに対し、 Oracle Tuxedo Application Rehosting Workbenchはプラットフォームの移行プロジェクトの間でのみ使用されます。Oracle Tuxedo Application Rehosting Workbenchは、JCLトランスレータなどの、いくつかのツールで構成されます。
名前が示すとおり、このツールの役割は、他のコンポーネントが他のOracle Tuxedo Application Rehosting Workbenchツールにより変換または生成されるという状況で、ソース・プラットフォーム(z/OS、IBMジョブ制御言語)で実行しているJCLを、ターゲット・プラットフォーム(Oracle Tuxedo Application Runtime for Batch機能の起動を伴うUnixまたはLinux、Kornシェル(KSH)言語)で実行しているKornシェル(KSH)シェル・スクリプトに同じ動作のまま変換することです。この章の目的は、JCLトランスレータのすべての機能を正確に説明することです。
「はじめに」の概念も参照してください。
Oracle Tuxedo Application Rehosting Workbench JCL Translatorはすべての要求された変換を単一パスで処理して、次を行います。
Oracle Tuxedo Application Runtime for Batchコンポーネントを使用して、結果シェル・スクリプトをコンパイルし、ソース・プラットフォームでの動作と同じようにターゲット・プラットフォームで実行することができます。ただし、動作範囲の項に詳細が記載されている場合を除きます。
JCL変換プロセスは、各JCLで個別に動作します。しかし、複数のJCLでJCLトランスレータを同時に実行することは適切ではありません。複数のJCLに同じサブファイルが含まれる場合、トランスレータ・インスタンスが同時にこのサブファイルの変換を書き込んで、ファイルが破損する危険性があるためです。実際には、JCL変換は高速で増分的であるため、複数のプロセッサを使用して高速化する必要はありません。
JCLトランスレータおよび基礎となるOracle Tuxedo Application Runtime for Batchコンポーネントによりサポートされる、 JCLカード、パラメータ、オプションおよびユーティリティ・プログラムの詳細な説明は、 Oracle Tuxedo Application Runtime for Batchのリファレンス・ガイドの Oracle Tuxedo Application Runtime Batch環境におけるZ/OS JCLに関する章を参照してください。
入力コンポーネントは、カタロガによる解析が終了したアセット内のすべてのJCLスクリプト(メイン・ファイル)です。実際、JCLトランスレータはソース・ファイルではなくスクリプトのPOBファイルをロードします。カタロガによる制限(JCL当たり複数のジョブは不可など。「カタロガ」を参照)に加え、JCL変換を試行する前には次のルールに従う必要があります。
JCLトランスレータは、システム記述ファイルとJCL変換構成ファイルの2つのパラメータ・ファイルにより動作します。
システム記述ファイルには、処理するアセット内のすべてのソース・ファイルの場所、タイプおよび可能性のある依存関係を記述します。これ自体は、カタロガだけでなく、JCLトランスレータを含むすべてのRehosting Workbenchツールが、これらのソース・ファイルおよび対応するコンポーネントにアクセスするためのキーです。
次のコンポーネント・タイプがJCLトランスレータに関連します。
次の(グローバルおよびローカル)オプションがJCLトランスレータに関連します。
options jcl-globals = VAR01 = "T23RT", PARM = "USERT".
directory "Sysin/BPRO.PARMIMS" logical-name "BPRO.BXZ.PARMFIX" type JCL-SYSIN files "*.sysin".
directory "JCL/BPRO" type JCL files "*.jcl" libraries "Sysin/BPRO.PARMIMS".
JCL変換構成ファイルの内容は、パラメータ名=パラメータ値という形式の"割当て"のリストです。これらの割当てのうち、パラメータ値が文字列のシーケンスであるものは、末尾がピリオドである必要があり、文字列はカンマで区切られます。次のパラメータが使用可能です。
正常に削除されるときに、ターゲットKSHスクリプトに保持するファイル割当てのリスト。詳細は、set-delete-fsnおよびset-no-delete-fsnを参照してください。
|
||
正常に保持されるときに、ターゲットKSHスクリプトから削除されるファイル割当てのリスト。詳細は、set-delete-fsnおよびset-no-delete-fsnを参照してください。
|
最後の2つのパラメータ名set-delete-fsn
およびset-no-delete-fsn
のパラメータ値の構文は次のとおりです。
ddname ( program-name, program-name, … ) , ddname (program-name … ) , … .
注意: | DD名およびプログラム名はソース構文を使用して記号として記述されます。区切り文字(カッコ、カンマ、末尾のピリオド)は必須です。 |
注意: | このパラメータ値のセマンティクスは次のとおりです。DD名がプログラム名の明示リストと関連付けられている場合、正確にこれらの論理ファイル(論理ファイルはプログラムのFDまたはSD)を表します。DD名がプログラム名と関連付けられていない場合、アセット中のすべてのプログラムのうちこれらの名前を持つすべての論理ファイル(FDまたはSD)を表します。拡張後、"保持"および"削除"する2つの論理ファイルのリストを取得します。"保持"リストは"削除"リストから引かれ、"削除"論理ファイルに関連するファイル割当て(DDカード)はターゲットKSHスクリプトに変換されません。これにより、ターゲット・スクリプトから、一時ソート・ファイルや物理データベース・ファイルなどの、プログラムの起動に直接役立つわけではないファイル割当てがクリーンアップされます。 |
生成されたスクリプトはksh88またはpdksh(パブリック・ドメインKSH)とだけ互換性があると認証されます。このスクリプトにより起動されるOracle Tuxedo Application Runtime for Batchコンポーネントには、基礎となるKSHエンジンに関連してより厳しい要件がある可能性があります。
各(メイン)JCLファイル(ジョブ)に対し、JCLトランスレータは同じベース名とsuffix-skeleton構成パラメータで指定した拡張子を持つ1つの(メイン)KSHファイル(スクリプト)を生成します(「JCL変換構成ファイルの内容」を参照)。このファイルはroot-skeleton構成パラメータで指定したディレクトリをルートとする階層の下で、システム・ルートの下のソース・ファイルと同じ相対サブディレクトリに配置されます。ターゲット・ファイルが変換前に存在する場合、上書きされます。
メイン・ファイルがカタロガにより処理されるときに、いくつかのメイン・ファイルから参照されるサブファイルがソース・アセットにない場合、後者はログに記録され("*Warning*: ZZZ file XXXXXX not found in JCL file YYYYYY
"という形式のメッセージが使用され、ここでのZZZはPROCまたはINCLまたはSYSIN)、例外が報告されます。この場合、JCLトランスレータは(不完全な)メイン・ファイルの処理を拒否するか、または動作しない不完全なKSHスクリプトを生成します。
プロシージャはm_ProcInclude
Oracle Tuxedo Application Runtime for Batch機能を使用して起動されます。ターゲット・サブファイルはこの機能以外、さらに一般的な場合としては、Oracle Tuxedo Application Runtime for Batchで生成されたKSHスクリプト以外では、実行可能ではありません。プロシージャの内容はジョブ処理の"変換"フェーズのスクリプト構成に挿入されます。『Oracle Tuxedo Application Runtime for Batchユーザー・ガイド』を参照してください。
同様に、インクルード・ファイルはm_ShellInclude
Oracle Tuxedo Application Runtime for Batch機能を使用して起動され、このコンテキスト以外では使用できません。ほとんどのインクルード・ファイルは個別のサブファイルに変換されます。ただし、インクルード・ファイルにEXECカードが含まれ、完全な手順(の順序)が定義されていない場合は、抽出を実行できず、元のサブファイルの内容がメイン・ファイルの内容であるかのように変換されることがあります。
SYSINファイルおよびその内容は、直接KSH文(関数の起動)に変換されるか、または標準のファイル割当て(詳細は後述を参照)として処理されます。
ストリーム内プロシージャおよびSYSINファイルは、変換が関係し、もちろんメイン・ターゲット・ファイル内に存在する限り、ストリーム外の姉妹として処理されます。ストリーム内プロシージャはメイン・ファイルの最後に移動し、ストリーム内SYSINは対応する手順内に残ります。
元のJCLで使用されるz/OS変数は、$[PARM]
の形式の特別な記号に変換され、実行フェーズの直前の変換フェーズで、JES2の方式に "静的に"置換されます。詳細は、Oracle Tuxedo Application Runtime for Batchのユーザー・ガイドを参照してください。
さらに、生成されたKSHスクリプトおよびOracle Tuxedo Application Runtime for Batchのコンポーネントは、次のような少数のKSHおよび環境変数を使用します。
ターゲットKSHスクリプトは、"逆方向への"ジャンプを含む、あらゆる種類のコントロール・フローを実装できる実行ループを中心に構成され、あらゆる手順でのスクリプトの(再)起動も可能にします。元のJCLの様々な手順は、ループ本体で同じ順序で実装され、そのラベル(ソースJCLと同じ)とCASE要素の終了記号により区切られます。テクニカル・サポートおよびブックキーピング操作は、スクリプト全体の最初と最後だけでなく、各手順の最初と最後に挿入されます。これにより、インスタンスがコントロール・フロー(条件コード、ジャンプなど)を処理できます。
次のJCLカードまたは構成は、適切なOracle Tuxedo Application Runtime for Batch関数の起動に変換されます: JOB
、JCLLIB
、SET
、DD
、procオーバーライドDD
、EXEC
(プログラム)、EXEC
(プロシージャ)、INCLUDE
、元のJCLからのIF/THEN/ ELSE/ENDIF
、IDCAMSコマンド・ファイルからのIF
およびCOND
オプション。
ソースJCLのコメントはKSHコメントに変換され、トランスレータは"正しい場所"のできるだけ近くに配置しようとします。しかし継続領域のコメント(パラメータの後の最初の空白の後など)は無視され、結果スクリプトに再生成されません。
ジョブを終了する//
カードはスクリプトの最後へのジャンプとして変換されます。
前述のとおり、EXEC
プロシージャ・カードはm_ProcInclude
Oracle Tuxedo Application Runtime for Batch関数の起動に変換され、INCLUDE
カードはm_ShellInclude
関数の起動に変換されます。SYSINファイルおよびリファレンス(DDカード)は2つの方法で処理されます。
m_FileAssign
関数の起動に変換されます。m_FileLoad
関数の起動に変換されます。ストリーム内データ・ファイル(DD * カードおよび関連する内容)は通常、テキストのようなファイルで、ターゲット・スクリプト内で実装されます。その内容のEBCDICからASCIIへの変換は、ソースJCLファイルの変換と同時に、移行プラットフォームへの転送中に実行されます。
実行ログは変換プロセスの進捗をレポートします。この構造は次のとおりです。
CMD : /refine/launch.bash jclz-unix -archi64 -s ../param/sys.desc -c ../param/config.desc
MetaWorld starter
(funcall MAKE-TRANSLATE)
*interactive-mode-string* *UNDEFINED*
Parsing system file : ../param/system.desc
MY_DIR = /refine
Current OS is IBM-MF
Parsing config file : ../param/config-trad-JCL.desc
File list in table : /workspace/FTJCL01/source/../param/file-list-in-table.txt
Creating target file /workspace/FTJCL01/trf-jcl/JCL/BBSAJ001.ksh ...
At 12:02:08, Loading /workspace/FTJCL01/source/JCL/pob/BBSAJ001.jcl.pob...
Printing /workspace/FTJCL01/trf-jcl/JCL/BBSAJ001.ksh
done
Creating target file /workspace/FTJCL01/trf-jcl/JCL/BDBAJ001.ksh ...
At 12:02:08, Loading /workspace/FTJCL01/source/JCL/pob/BDBAJ001.jcl.pob...
Patching because current version ("9.9.1") and POB version ("0.8.6") are not the same
Printing /workspace/FTJCL01/trf-jcl/JCL/BDBAJ001.ksh
done
Rest in peace, ART...
JCLトランスレータの開始時に、メインを始めとして様々な構成ファイルを読み取ってチェックします。この段階で不整合が検出された場合、1つまたは複数のエラー・メッセージが出力されてトランスレータは終了します。そうでない場合、トランスレータはコマンドライン・オプションと構成ファイル・オプションの両方を使用して、処理する(ソース)JCLのリストを含む、内部パラメータを設定します。次に順番に各JCLの処理に進み、各JCLに対し次のことを行います。
トランスレータは複数の同時実行プロセスにより同時に実行されることはできません。2つの異なるプロセスが同時に同じサブファイルに書き込む必要がある危険性があるからです。
JCLトランスレータは、汎用的なOracle Tuxedo Application Rehosting Workbenchランチャである、調整コマンドを使用して実行するように設計されています。実行ログ管理および増分/繰返し操作といった、これらのツールの操作の様々な状況を処理します。カタロガの章のコマンドライン構文を参照してください。
$REFINEDIR/refine jclz-unix [ launcher-options… ] \
( -s | -system-desc-file ) system-desc-path \
( -c | -config ) main-config-file-path \
( source-file-path | ( -f | -file | -file-list-file ) file-of-files )…
ランチャ・オプションはカタロガの章のコマンドライン構文で説明しています。必須オプションは次のとおりです。
処理するソースJCLを定義する一般的なオプションは次のとおりです。
個々のJCLおよびfiles-of-filesを必要なだけ指定できます。作業リストが作成されるのは、コマンドラインがJCLトランスレータで分析されるときです。詳細は、前述の説明を参照してください。
強力なコンピューティング・プラットフォームが容易に使用可能である今日であっても、Rehosting Workbenchを使用した完全なアセットの処理は、依然として計算集中的で長時間の実行、メモリーを消費するタスクのままです。そのため、Oracle Tuxedo Application Rehosting Workbenchツールは容易に停止および再起動できるように設計されており、makeに似たメカニズムのおかげで、すでに実行された作業を繰り返しません。これにより、移行プロジェクトのすべてのフェースで効率的な操作が可能です。
最初のフェーズでは、完全に新しいアセットから、安定したアセットの最初の変換/生成の終わりまで、makeに似たメカニズムが使用されて、次のような繰返し操作を可能にしています。
minimum-free-ram-percent
オプションで指定したしきい値よりも下であるかどうかをチェックします。このモードが特に適しているのは、カタロガのようにアセット全体にグローバルな処理を行うツールまたはコマンドです。JCLトランスレータのようなコンポーネント固有のツールでも役立ちます。これは Rehosting Workbenchツールの通常モードでの動作であり、アクティブ化するのに特別なアクションは必要ありません。
JCLトランスレータは、様々なコンポーネント(メインJCLファイルおよびサブファイル)と対応する結果ファイル(POBファイル、ターゲットKSHファイル)の間の依存関係を認識しています。この情報を使用して、なんらかの変更、たとえば、JCLソース・ファイルの追加、変更または削除などがアセットで発生したときに、増分的に対応できます。カタロガは影響を受けるJCLを再解析して、JCLトランスレータは再解析されたJCLのみを再変換します。繰り返しますが、これは Rehosting Workbenchツールの通常モードでの動作であり、アクティブ化するのに特別なアクションは必要ありません。
前述のとおり、複数のプロセスでJCLトランスレータを同時に実行することはお薦めしません。異なるプロセスが同じターゲット・サブファイルに同時に書き込む可能性があるためです。ただし、JCL変換は高速であるため、通常は同時処理を使用して処理を高速化する必要はありません。
前者の方法をお薦めします。後者よりもソース・アセットへの"侵入"の度合いが低いからです。
後者は、プロシージャおよびインクルード・ファイルなどのサブファイルとともに、手動で削除する必要があります(他のKSHで使用しない場合)。
トランスレータ構成ファイルのtarget-proc(またはroot-skeletonの場合もあり)オプションで定義されたディレクトリにあります。このパスはソース・アセット(システム記述ファイル)のルート・ディレクトリの下のプロシージャの相対パスに追加されます。たとえば次のディレクティブを使用します。
プロシージャは/Workspace/Master-Proc/PROC
ディレクトリに配置されます。
保持したいFSNが削除するFSNのリストにないことを確認します(トランスレータ構成ファイルのset-delete-fsnオプション)。あれば、このリストから削除するか、または全部(set-delete-fsnリストの"ワイルドカード")ではないがそのうちのいくつかは削除したい場合は、set-keep-fsnリストに削除するものを追加します。