Skip to main content

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.

Old KB# 3783

#EnterpriseDeveloper
#MFDS