このコマンド文字列は、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のさまざまな値に対して実行される実際のコマンドを示します。
|
コマンドを指定する際は、引用符で囲む必要があることに注意してください。すなわち、コマンド自体に引用符を含める必要がある場合は、2つの引用符を使用する必要があります。引用符および引用符で囲まれた文字列の詳細については、「引用符および引用文字列」を参照してください。
OS400の権限に関する検討事項
EXEC_OS400によって実行されるコマンドでは、LANSAシステムの所有者ユーザー・プロファイルの権限と、USEADPAUT(*NO)が指定された呼び出しスタックでエントリーによって「チェーン」が中断されない限り、USRPRF(*OWNER)が指定された呼び出しスタック内にある他のエントリーのユーザー・プロファイルの権限が適用されます。
これが実際のサイト・セキュリティ・ポリシーに適さない場合は、以下のコマンドを使用してください。
CHGPGM PGM(M@CPEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)
CHGPGM PGM(M@OSEXEC) USRPRF(<ユーザーの値>) USEADPAUT(<ユーザーの値>)
これらのいずれかのコマンドが失敗する場合は、LANSAの製品ベンダーにお問い合わせください。LANSAシステムを何らかの形でアップグレードした場合も、上記の値を確認してください。