BCS MVS Return Code


There is something strange about return code when you use ISPF service calls. This article will outline the steps taken and code involved so you may trace this development effort with me.
Below is the listing of the invoking clist.
[codesyntax lang=”text”]

PROC 0
CONTROL LIST
FREE FI(FSOUT SYSOUT)
ALLOC FI(FSOUT) DA(TST) SHR
ALLOC FI(SYSOUT) DA(OUT) SHR
CALL 'AMBMVS.PDS.LOAD(ABM00003)'
FREE FI(FSOUT SYSOUT)

[/codesyntax]
Our main program is listed below.
[codesyntax lang=”cobol”]

000100 IDENTIFICATION DIVISION.                                         00010000
000200 PROGRAM-ID.    BCSCOB01.                                         00020000
000300 AUTHOR.        ARCH BROOKS.                                      00030000
000400 INSTALLATION   BROOKS COMPUTING SYSTEMS, LLC.                    00040000
000500 DATE-WRITTEN.  09/18/2014.                                       00050000
000600 DATE-COMPILED. 09/18/2014.                                       00060000
000700 ENVIRONMENT DIVISION.                                            00070000
000800 CONFIGURATION SECTION.                                           00080000
000900 SOURCE-COMPUTER. IBM-Z-OS.                                       00090000
001000 OBJECT-COMPUTER. IBM-Z-OS.                                       00100000
001100 DATA DIVISION.                                                   00110000
001200 WORKING-STORAGE SECTION.                                         00120000
001210 01  CMDBUF PIC X(500).                                           00121000
001220 01  RC PIC S9(4) COMP.                                           00122008
001230 01  OUT-AREA.                                                    00123004
001240     05  RECVAL PIC 9(5).                                         00124008
001250     05  FILLER PIC X.                                            00125004
001260     05  MSG PIC X(74).                                           00126004
001300 PROCEDURE DIVISION.                                              00130000
001301     CALL 'ABS00003'.                                             00130104
001302     MOVE 'EDIT DATASET(PDS.COBOL(ABS00004))' TO CMDBUF.          00130203
001310     CALL 'ABS00001' USING CMDBUF RC.                             00131003
001311     MOVE RC TO RECVAL.                                           00131104
001312     MOVE 'FIRST CALL TO ROUTINE' TO MSG.                         00131204
001320     CALL 'ABS0003A' USING OUT-AREA.                              00132005
001321     MOVE 'EDIT DATASET(PDS.COBOL(ABS00004)' TO CMDBUF.           00132104
001322     CALL 'ABS00001' USING CMDBUF RC.                             00132204
001323     MOVE RC TO RECVAL.                                           00132304
001324     MOVE 'SECOND CALL TO ROUTINE' TO MSG.                        00132404
001325     CALL 'ABS0003A' USING OUT-AREA.                              00132505
001330     CALL 'ABS0003B'.                                             00133004
001400     GOBACK.                                                      00140000

[/codesyntax]
Sub routine ABS00003 performs physical sequential output to a fixed block logical record length of 80 characters.
[codesyntax lang=”cobol”]

000100 IDENTIFICATION DIVISION.                                         00010000
000200 PROGRAM-ID.    ABS00003.                                         00020000
000300 AUTHOR.        ARCH BROOKS.                                      00030000
000400 INSTALLATION   BROOKS COMPUTING SYSTEMS, LLC.                    00040000
000500 DATE-WRITTEN.  09/15/2014.                                       00050000
000600 DATE-COMPILED. 09/15/2014.                                       00060000
000700 ENVIRONMENT DIVISION.                                            00070000
000710 INPUT-OUTPUT SECTION.                                            00071000
000720 FILE-CONTROL.                                                    00072000
000730     SELECT F-FILE ASSIGN TO UT-S-FSOUT                           00073000
000740     ORGANIZATION IS SEQUENTIAL.                                  00074000
000750 DATA DIVISION.                                                   00075000
000760 FILE SECTION.                                                    00076000
000770 FD  F-FILE                                                       00077000
000780     DATA RECORD IS F-RECORD                                      00078000
000781     BLOCK CONTAINS 0 RECORDS                                     00078103
000790     RECORDING MODE IS F.                                         00079000
000900 01  F-RECORD PIC X(80).                                          00090000
001000 WORKING-STORAGE SECTION.                                         00100000
001100 LINKAGE SECTION.                                                 00110000
001200 01  EOF-SW PIC X.                                                00120000
001210 01  LSBUF PIC X(80).                                             00121000
001220 PROCEDURE DIVISION.                                              00122000
001230     OPEN OUTPUT F-FILE.                                          00123000
001240     GOBACK.                                                      00124000
001250     ENTRY 'ABS0003A' USING LSBUF.                                00125004
001251     WRITE F-RECORD FROM LSBUF.                                   00125100
001280     GOBACK.                                                      00128000
001290     ENTRY 'ABS0003B'.                                            00129001
001300     CLOSE F-FILE.                                                00130000
001400     GOBACK.                                                      00140000

[/codesyntax]
Here is the source code that issues the ISPF command to make the dialog function.
[codesyntax lang=”cobol”]

000100 IDENTIFICATION DIVISION.                                         00010000
000200 PROGRAM-ID.    ABS00001.                                         00020000
000300 AUTHOR.        ARCH BROOKS.                                      00030000
000400 INSTALLATION   BROOKS COMPUTING SYSTEMS, LLC.                    00040000
000500 DATE-WRITTEN.  09/18/2014.                                       00050009
000600 DATE-COMPILED. 09/18/2014.                                       00060009
000700 ENVIRONMENT DIVISION.                                            00070000
000800 CONFIGURATION SECTION.                                           00080000
000900 SOURCE-COMPUTER. IBM-Z-OS.                                       00090000
001000 OBJECT-COMPUTER. IBM-Z-OS.                                       00100000
001100 DATA DIVISION.                                                   00110000
001200 WORKING-STORAGE SECTION.                                         00120000
001210 01  RVAL PIC 9999.                                               00121024
001300 01  RCL PIC S9(5) COMP.                                          00130020
001400 01  OBUF.                                                        00140021
001500     05  RET PIC 9999.                                            00150021
001510     05  FILLER PIC X.                                            00151021
001520     05  MSG PIC X(75).                                           00152021
001600 LINKAGE SECTION.                                                 00160000
001700 01   COMD PIC X(500).                                            00170000
001710 01   RC  PIC S9(4) COMP.                                         00171019
001800 PROCEDURE DIVISION USING COMD RC.                                00180010
001900     CALL 'ABS00004' USING COMD, RCL.                             00190024
001930     CALL 'ISPEXEC' USING RCL, COMD.                              00193025
001931     DISPLAY 'RETURN CODE IS *' RETURN-CODE '*'.                  00193127
001933     MOVE RETURN-CODE TO RET.                                     00193325
001934     MOVE RETURN-CODE TO RC.                                      00193426
001935     MOVE 'IN SUBROUTINE' TO MSG.                                 00193522
001936     CALL 'ABS0003A' USING OBUF.                                  00193622
002000     GOBACK.                                                      00200000

[/codesyntax]
Notice the display statement immediately after calling ISPEXEC.  It also indicates the return code is 4.
Next we will view the code that determines the usable length of  the command string in the 500 byte command buffer.
[codesyntax lang=”cobol”]

000100 IDENTIFICATION DIVISION.                                         00010000
000200 PROGRAM-ID.    ABS00004                                          00020000
000300 AUTHOR.        ARCH BROOKS.                                      00030000
000400 INSTALLATION   BROOKS COMPUTING SYSTEMS, LLC.                    00040000
000500 DATE-WRITTEN.  09/18/2014.                                       00050000
000600 DATE-COMPILED. 09/18/2014.                                       00060000
000700 ENVIRONMENT DIVISION.                                            00070000
000800 CONFIGURATION SECTION.                                           00080000
000900 SOURCE-COMPUTER. IBM-Z-OS.                                       00090000
001000 OBJECT-COMPUTER. IBM-Z-OS.                                       00100000
001100 DATA DIVISION.                                                   00110000
001200 WORKING-STORAGE SECTION.                                         00120000
001210 LINKAGE SECTION.                                                 00121000
001211 01  FSBUF PIC X(500).                                            00121100
001212 01  FSBUF-RED REDEFINES FSBUF.                                   00121200
001213     05  BS PIC X OCCURS 500 TIMES.                               00121300
001214 01  BC PIC S9(5) COMP.                                           00121404
001215 PROCEDURE DIVISION USING FSBUF BC.                               00121500
001250     PERFORM 0010-FIND-NS VARYING BC FROM 500 BY -1               00125000
001260       UNTIL ((BS (BC) NOT EQUAL SPACES) OR                       00126002
001270              (BC IS LESS THAN 2)).                               00127003
001320     GOBACK.                                                      00132000
001330 0010-FIND-NS.                                                    00133000

[/codesyntax]
I am sure there is a logical explanation to this problem but right now I do no know what it is.
I am including the compiled listing for ABS00001 to show the compile options used.  The options are the same for all the compiled programs.
[codesyntax lang=”cobol”]

1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0                         Date 09/19/2014  Time 06:04:26   Page     1
0Invocation parameters:
  VBREF
0Options in effect:
  NOADATA
    ADV
    QUOTE
    ARITH(COMPAT)
  NOAWO
    BUFSIZE(4096)
  NOCICS
    CODEPAGE(1140)
  NOCOMPILE(S)
  NOCURRENCY
    DATA(31)
  NODATEPROC
    DBCS
  NODECK
  NODIAGTRUNC
  NODLL
  NODUMP
  NODYNAM
  NOEXIT
  NOEXPORTALL
  NOFASTSRT
    FLAG(I,I)
  NOFLAGSTD
    INTDATE(ANSI)
    LANGUAGE(EN)
  NOLIB
    LINECOUNT(60)
  NOLIST
  NOMAP
  NOMDECK
  NONAME
    NSYMBOL(NATIONAL)
  NONUMBER
    NUMPROC(NOPFD)
    OBJECT
  NOOFFSET
  NOOPTIMIZE
    OUTDD(SYSOUT)
    PGMNAME(COMPAT)
    RENT
    RMODE(AUTO)
    SEQUENCE
    SIZE(MAX)
    SOURCE
    SPACE(1)
  NOSQL
    SQLCCSID
  NOSSRANGE
  NOTERM
  NOTEST
  NOTHREAD
    TRUNC(STD)
    VBREF
  NOWORD
1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0                         Date 09/19/2014  Time 06:04:26   Page     2
0   XMLPARSE(XMLSS)
    XREF(FULL)
    YEARWINDOW(1900)
    ZWB
1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0               ABS00002  Date 09/19/2014  Time 06:04:26   Page     3
   LineID  PL SL  ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----+----7-|--+----8 Map and Cross Reference
0  000001         000100 IDENTIFICATION DIVISION.                                         00010000
   000002         000200 PROGRAM-ID.    ABS00002.                                         00020000
   000003         000300 AUTHOR.        ARCH BROOKS.                                      00030000
   000004         000400 INSTALLATION   BROOKS COMPUTING SYSTEMS, LLC.                    00040000
   000005         000500 DATE-WRITTEN.  09/15/2014.                                       00050000
   000006         000600 DATE-COMPILED. 09/19/14.                                         00060000
   000007         000700 ENVIRONMENT DIVISION.                                            00070000
   000008         000710 INPUT-OUTPUT SECTION.                                            00071000
   000009         000720 FILE-CONTROL.                                                    00072000
   000010         000730     SELECT V-FILE ASSIGN TO UT-S-VSINP                           00073021 14
   000011         000740     ORGANIZATION IS SEQUENTIAL.                                  00074002
   000012         001100 DATA DIVISION.                                                   00110000
   000013         001110 FILE SECTION.                                                    00111000
   000014         001120 FD  V-FILE                                                       00112005
   000015         001121     DATA RECORD IS V-RECORD                                      00112116 *
   000016         001122     BLOCK CONTAINS 0 RECORDS                                     00112224
   000017         001123     RECORDING MODE IS V                                          00112310
   000018         001124     RECORD IS VARYING IN SIZE FROM 1 TO 255 DEPENDING ON REC-LEN.00112426 *
   000019         001130 01  V-RECORD PIC X(255).                                         00113026
   000020         001200 WORKING-STORAGE SECTION.                                         00120000
   000021         001201 01  REC-LEN PIC 9(5).                                            00120125
   000022         001210 LINKAGE SECTION.                                                 00121000
   000023         001211 01  EOF-SW PIC X.                                                00121120
   000024         001220 01  LSBUF PIC X(80).                                             00122000
   000025         001300 PROCEDURE DIVISION.                                              00130020
   000026         001310     OPEN INPUT V-FILE.                                           00131006 14
   000027         001400     GOBACK.                                                      00140000
   000028         001500     ENTRY 'ABS0002A' USING LSBUF, EOF-SW.                        00150020 24 23
   000029         001600     READ V-FILE INTO LSBUF                                       00160000 14 24
   000030      1  001700         AT END MOVE 'X' TO EOF-SW.                               00170000 23
   000031         001800     GOBACK.                                                      00180000
   000032         001900     ENTRY 'ABS0002B'.                                            00190022
   000033         002000     CLOSE V-FILE.                                                00200000 14
   000034         002100     GOBACK.                                                      00210000
1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0               ABS00002  Date 09/19/2014  Time 06:04:26   Page     4
0 Count   Cross-reference of verbs        References
 1        CLOSE. . . . . . . . . . . . .  33
 2        ENTRY. . . . . . . . . . . . .  28 32
 3        GOBACK . . . . . . . . . . . .  27 31 34
 1        MOVE . . . . . . . . . . . . .  30
 1        OPEN . . . . . . . . . . . . .  26
 1        READ . . . . . . . . . . . . .  29
1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0               ABS00002  Date 09/19/2014  Time 06:04:26   Page     5
0An "M" preceding a data-name reference indicates that the data-name is modified by this reference.
  Defined   Cross-reference of data names   References
       23   EOF-SW . . . . . . . . . . . .  28 M30
       24   LSBUF. . . . . . . . . . . . .  28 M29
       21   REC-LEN. . . . . . . . . . . .  18
       14   V-FILE . . . . . . . . . . . .  10 26 29 33
       19   V-RECORD
1PP 5655-S71 IBM Enterprise COBOL for z/OS  4.1.0               ABS00002  Date 09/19/2014  Time 06:04:26   Page     6
0 Defined   Cross-reference of programs     References
        2   ABS00002
-* Statistics for COBOL program ABS00002:
 *    Source records = 34
 *    Data Division statements = 4
 *    Procedure Division statements = 9
0End of compilation 1,  program ABS00002,  no statements flagged.
0Return code 0

[/codesyntax]
Mr. Arch Brooks, Software Engineer, Brooks Computing Systems, LLC authored this article.

Leave a Reply

Your email address will not be published. Required fields are marked *