7.54.2 EXEC_OS400 についてのコメント/警告

このコマンド文字列は、IBM提供のプログラムQCMDEXCによって実行されます。そのため、IBM i 形式の有効なコマンドでなければなりません。また、IBM 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つの引用符を使用する必要があります。引用符および引用符で囲まれた文字列の詳細については、「引用符および引用文字列」を参照してください。

OS400の権限に関する検討事項

EXEC_OS400によって実行されるコマンドでは、LANSAシステムの所有者ユーザー・プロファイルの権限と、USEADPAUT(*NO)が指定された呼び出しスタックでエントリーによって「チェーン」が中断されない限り、USRPRF(*OWNER)が指定された呼び出しスタック内にある他のエントリーのユーザー・プロファイルの権限が適用されます。

これが実際のサイト・セキュリティ・ポリシーに適さない場合は、以下のコマンドを使用してください。

CHGPGM PGM(M@CPEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)

CHGPGM PGM(M@OSEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)

これらのいずれかのコマンドが失敗する場合は、LANSAの製品ベンダーにお問い合わせください。LANSAシステムを何らかの形でアップグレードした場合も、上記の値を確認してください。