7.44.2 EXEC_OS400についてのコメント/警告
このコマンド文字列は、IBM提供のプログラムQCMDEXCによって実行されます。そのため、i5/OS形式の有効なコマンドでなければなりません。また、System iでのみ実行できます。
EXEC_OS400コマンドによって実行が指定されたオペレーティング・システム・コマンドの実行に失敗した場合は、ファンクションをLANSAデバッグ・モードに切り替え、操作を再度行ってみてください。詳細については、『LANSA/ADユーザーガイド』の「LANSAデバッグ・モード」を参照してください。
ファンクションがデバッグ・モードの場合、実際にコマンドの実行を処理するルーチンは、コマンドの実行直前に処理を停止し、そのコマンド全体が表示されます。これには、コマンドに埋め込まれたLANSAフィールドの代替値が含まれます。
コマンド文字列に指定するファンクションのフィールドは、大文字でなければなりません。
コマンド文字列内のフィールドを置き換えるプロセスは、非常に複雑です。以下の例に、一般的な置換方法を示します。
以下のコマンドを実行するとします。
EXEC_OS400 COMMAND('CALL PGM001 (#BATCH #TRANS)')
ここで、#BATCHは数値フィールド(7 0)、#TRANSは10桁の英数字フィールドです。以下の表に、#BATCHおよび#TRANSのさまざまな値に対して実行される実際のコマンドを示します。
#Batchの値 |
#Transの値 |
実行される実際のコマンド文字列/コメント |
---|---|---|
42 |
XXXXXXXXXX |
CALL PGM001 (X'0000042F' XXXXXXXXXX) |
108 |
XXX XXX |
CALL PGM001 (X'0000108F' 'XXX XXX ') (#TRANSに埋め込みブランクが含まれているため) |
9999 |
1234567890 |
CALL PGM001 (X'0009999F' '1234567890') (#TRANSに保持されている値がすべて英数文字のため) |
コマンドを指定する際は、引用符で囲む必要があることに注意してください。すなわち、コマンド自体に引用符を含める必要がある場合は、2つの引用符を使用する必要があります。引用符および引用符で囲まれた文字列の詳細については、「引用符および引用文字列」を参照してください。
EXEC_OS400によって実行されるコマンドでは、LANSAシステムの所有者ユーザー・プロファイルの権限と、USEADPAUT(*NO)が指定された呼び出しスタックでエントリーによって「チェーン」が中断されない限り、USRPRF(*OWNER)が指定された呼び出しスタック内にある他のエントリーのユーザー・プロファイルの権限が適用されます。
これが実際のサイト・セキュリティ・ポリシーに適さない場合は、以下のコマンドを使用してください。
CHGPGM PGM(M@CPEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)
CHGPGM PGM(M@OSEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)
これらのいずれかのコマンドが失敗する場合は、LANSAの製品ベンダーにお問い合わせください。LANSAシステムを何らかの形でアップグレードした場合も、上記の値を確認してください。