as/400 には、テスト環境と生産環境があります。プログラムが機能することをテストしたら、それらを生産的な環境に置くことができます。どちらの環境にも、類似した一連のライブラリが含まれています。
プログラムがどの環境で動作するかをプログラムに伝える基本的なメカニズムは、プログラムが実行されるジョブに使用されるライブラリリストです。したがって、多くの場合、ジョブの送信時にプログラムにパラメーターが渡されます。これは、プログラムにテスト環境または生産環境のいずれかで動作するように指示します。私のプログラムは実行時間全体を通じて常にこのパラメーターを保持する必要があり、多くの場合、他のプログラムに渡すことさえあるため、これは私を悩ませます。初期プログラムは情報自体を必要としない場合もありますが、それを必要とするプログラムを呼び出すため、パラメーターとして受け取る必要があります。
私が直面している特定の問題を提示するには、より大きなプロセスの個々の部分間の通信は、システム全体のデータキューを介して行われることがよくあります。liblist に従って特定の DTAQ を読み取るのは魅力的ですRCVDTAQ
。DTAQ の名前を呼び出すだけで、liblist が適切なライブラリを選択します。DTAQ への書き込みも同様です。
ただし、プログラムは、リスンまたは書き込みの前に新しい DTAQ を作成する必要がある場合があります。これは、レイアウトとライブラリリストでは機能しません。次のように考えてください。
PROD-liblist:
PPGMLIB1
PPGMLIB2
PDFILELIB1
PDTAQLIB1
P...
...
TEST-liblist
TPGMLIB1
TPGMLIB2
TDFILELIB1
TDTAQLIB1
T...
...
?DTAQLIB1
ここで、私のプログラムはでDTAQ を作成する必要?
があります。P
T
私の最初のアイデアは、liblist を調べてエントリPDTAQLIB
またはエントリを探し、TDTAQLIB
どちらか早い方を取ることですが、その方法がわかりませんでした (したがって、関連する質問:どうすれば liblist を内部から読み取ることができますか? ILE プログラム? (できれば RPG または CL) )。
どのユーザーが現在のジョブを所有しているかを確認することで目標を達成できる可能性があることはわかっていますが、それでは liblist によってライブラリを選択するロジックが壊れてしまいます (現在の回避策のように)。
足りないものはありますか?私が書こうとしている、おそらく呼び出すための特別な方法CRTDTAQ
、またはこのliblist比較を行うための特別なAPIはありますか?