Problem:
We want to receive a return code from a Cobol program called by a bacth file in MFE. Can this be done?
Resolution:
Yes. From a MFE Command Prompt run this batch file. This is just a sample of a .BAT calling a Cobol program.
@echo off
rem - sample batch file using Cobol Return Code
:begin
cls
cobol lorince dialect(mf) anim noobj;
run lorince
if errorlevel == 3200 goto 3200
if errorlevel == 1600 goto 1600
if errorlevel == 800 goto 800
if errorlevel == 400 goto 400
goto died
:3200
echo Cobol returned 3200
goto end
:1600
echo Cobol returned 1600
goto end
:800
echo Cobol returned 800
goto end
:400
echo Cobol returned 400
goto end
:died
echo Cobol Never Returned Correct Value
:end
rem next line will end current window
rem exit
Identification Division.
Program-Id. LORINCE.
Data Division.
Working-Storage Section.
1 Flg Pic 9.
1 A-B Pic S9(4) Comp.
Procedure Division.
Move Zero to Flg
Call 'lorince1' Using Flg
Evaluate True
When Flg = 0
Add 1 to Flg
Move 1600 to A-B
Move A-B to Return-Code
Goback
When Flg = 1
Add 1 to Flg
Move 3200 to A-B
Move A-B to Return-Code
Goback
When Flg = 2
Add 1 to Flg
Move 400 to A-B
Move A-B to Return-Code
Goback
When Flg = 3
Add 1 to Flg
Move 800 to A-B
Move A-B to Return-Code
Goback
When Other
Goback
End-Evaluate.
Identification Division.
Program-Id. LORINCE1.
Data Division.
Working-Storage Section.
1 A Pic 9(8).
1 B Pic 9(8).
1 Date1.
2 D11 Pic 9(8).
2 D12 Pic 9(8).
Linkage Section.
1 Flg Pic 9.
Procedure Division Using Flg.
Move 1 to A B
Move Function Current-Date to Date1
Move D12 (1:2) to A
Move D12 (5:2) to B
Multiply A by B Giving B
Evaluate True
When (B = 0) Or (B > 0 And B < 500)
Move 0 to Flg
Goback
When B > 500 And B < 1000
Move 1 to Flg
Goback
When B > 1000 And B < 1500
Move 2 to Flg
Goback
When B > 1500 And B < 2000
Move 3 to Flg
Goback
When B > 2000 And B < 3000
Move 4 to Flg
Goback
When Other
Move 9 to Flg
Goback
End-Evaluate.
End Program Lorince1.
End Program Lorince.
#EnterpriseDeveloper
#MFDS