Perl スクリプト ファイルを呼び出す DOS バッチ ファイルがあります。
ssutexec.pl prog=MyProg I_CARD=MyCard O_F071=ME007 F70P=MYF70P TRIG=MYTRIG
set status=%errorlevel%
if NOT %status% == 0 (
echo *******************************************************
echo MPSBM070 JOB stopped with a RETURN CODE of %status%
echo ************** END OF JOB *****************************
goto JobEnd
)
ssutexec.pl perl スクリプト ファイル内で、エラー条件が実行され、スクリプトは exit($status) で終了します。
if ($status != 0)
{
system("ssutdttm.pl SSUTEXEC \"finished processing $prog_nam (Abnormal End) on\"") ;
print "******************************************************************" ;
print " JOB STOPPED - Due to Return code of ($status)" ;
print "*****************END OF JOB***************************************" ;
system("ssutdttm.pl SSUTEXEC \"finished processing $prog_nam (Abnormal End) on\"") ;
system("ssuttmdr.pl -c -b $starttime -m \"$prog_nam\"") ;
exit($status) ;
}
私は perl スクリプトの専門家ではありません。エラーレベルがトリガーされていないため、エラーが発生していません。DOS バッチ ファイル内の perl スクリプト終了コードの値をトラップするにはどうすればよいですか?
編集を含む: 新しいバッチ ファイルは次のようになります。
@echo off
setlocal enabledelayedexpansion
if not defined run_env goto ScriptExit
echo ******************************************************************
echo * MYPROG *
echo ******************************************************************
perl ssutdttm.pl MYPROG Start -
perl ssutexec.pl prog=MyProg I_CARD=MyCard O_F071=ME007 F70P=MYF70P TRIG=MYTRIG
set status=!errorlevel!
if NOT %status% == 0 (
echo *******************************************************
echo MYPROG JOB stopped with a RETURN CODE of %status%
echo ************** END OF JOB *****************************
goto JobEnd
)
:JobEnd
if %status% == 0 (
echo *******************************************************
echo NORMAL END OF JOB - RETURN CODE of %status%
echo ******** NORMAL END OF JOB ****************************
) ELSE (
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo ABNORMAL END OF JOB - RETURN CODE of %status%
echo !!!!!! ABNORMAL END OF JOB !!!!!!!!!!!!!!!!!!!!!!!!!!!!
)
ssutdttm.pl MYPROG end -
exit /b %status%
::
:ScriptExit
echo run_env: %run_env%