ZOS ABEND S0C7 Data exception error in file record

CONTENTS

Bottom

1. ABEND S0C7  message explication

2. Dump analysis for  Cobol source program compiled and executed

     2.1. Provoke program dump of PGM=LOANSNEW    execution (D0595_LAKMSTR – MAY 1995, for Account=0000000000000823)

     2.2. PSW (Program Status Word)  investigation of LAKMSTR error

     2.3. DUMP investigation of failing Assembler  instruction

     2.4. Program LOANSNEW compilation with  job COBBATCH  listing investigation

     2.5. Error repare in the LAKMSTR record

          2.5.1. Buffer length error repare  in the LAKMSTR record

          2.5.2. Error field repare in the LAKMSTR record

3. Dump analysis for  Cobol  program execution  without source available

     3.1. Provoke program dump of PGM=DAU9000   execution (D0595_DAKMSTR – MAY 1995, for Account=0000002000087811)

     3.2. PSW (Program Status Word)   investigation of DAKMSTR error

     3.3. DUMP investigation of  the failing Assembler  instruction and DAKMSTR repare

     3.4. Provoke program dump of PGM=DAU9000   execution (D0202_ DAKTRAN –  FEBRUARY 2002, for Account=0000001000000110)

     3.5. PSW (Program Status Word)   investigation of DAKTRAN error

     3.6. DUMP investigation of  the failing Assembler  instruction and DAKTRAN repare

 

 

Investigation of ZOS system error ABEND S0C7 due to error data in a file record that caused  data exception interruption of program instruction to occur  is made. Dump analysis with Cobol source program compiled and executed are performed on the base of PSW information, Assembler listing of Cobol compilation and  dump investigation. Detected is  the right record and the exact error field in the file. The error field  is     repared  and the program execution is restarted with successful end.   A  similar  approach is applied to dump analysis for  Cobol  program execution without source available for error field record detecting in  two different files with   finding  out the exact file from the dump. The same technology may be used  and developed for any program interruptions  of other  ZOS application programs.

 

     1. ABEND S0C7  message explication

  

To determine what kind of system error message is ABEND S0C7, go to MVS system codes using the following link:

http://publibz.boulder.ibm.com/epubs/pdf/iea2h734.pdflink to ZOS MVS system codes to find more information for error system codes.

 

Go to:  Edit – Find (CTRL + F) 0c7 – this is data exception:

0C7 Data exception. The reason code is whatever the data exception code is in field SDWADXC

in the SDWA (systems diagnostic work area) … etc.

A Data Exception is caused when a computational-3 field (that contains packed decimal digits) has an invalid digit (not 0-9), or its last byte contains an invalid sign (not F, C, or D).

Whereas S0C7 is data exception?

It occurs when you try to move a non numeric value to a Numeric variable. Generally soc-7 occurs due to data mismatch. It means if you are placing numeric data in alphabetic field.

S0C7 error occurs in the following situations:

– moving data from alphanumeric to editing characters;

– moving data from editing characters to alphanumeric data  type;

– involve alphanumeric datatypes in arithmetic operations.

     2. Dump analysis for  Cobol source program compiled and executed

          2.1. Provoke program dump of PGM=LOANSNEW    execution (D0595_LAKMSTR – MAY 1995, for Account=0000000000000823)

To produce  dump on ABEND during execution of Cobol program LOANSNEW, insert the statement //SYSABEND DD SYSOUT=A or //SYSUDUMP DD   SYSOUT=* in the JCL of job  JLO0595 as follows:

//JLO0595 JOB MSGLEVEL=(1,1),MSGCLASS=X,TIME=1440

//*

//JOBLIB   DD DSN=BCI05.LIB.BASE.LOAD,DISP=SHR

//         DD DSN=KCI01.LIB.PROD.LOAD,DISP=SHR

//         DD DSN=KCI01.LIB.PROD.LOAD,DISP=SHR

//*

//STEP1D  EXEC PGM=IEFBR14

//PRTFILE   DD  DSN=PRINT01.KCI01.LOAN0595.TXT,

//             DISP=(MOD,DELETE),

//             DCB=(RECFM=F,LRECL=143,DSORG=PS),

//             SPACE=(TRK,(1,1)),UNIT=VIO

//*

//STEP1   EXEC PGM=LOANSNEW

//SYSABEND DD SYSOUT=A    or   //SYSUDUMP DD   SYSOUT=*              

//LAKMSTR  DD DSN=KCI08.D0595.LAKMSTR,DISP=SHR

//CIKAREL  DD DSN=KCI02.D0595.CIKAREL,DISP=SHR

//CIKMSTR  DD DSN=KCI02.D0595.CIKMSTR,DISP=SHR

//BAKMSTR  DD DSN=KCI07.D0595.BAKMSTR,DISP=SHR

//PRTFILE  DD DSN=PRINT01.KCI01.LOAN0595.TXT,

//             DCB=(RECFM=F,LRECL=143,DSORG=PS,BUFNO=100),

//             DISP=(NEW,CATLG),

//             SPACE=(CYL,(350,50),RLSE),UNIT=vio

 

           2.2. PSW (Program Status Word)  investigation of LAKMSTR error

In TSO/ISPF – sd.st –   do the following:

S   jlo0595 – analysis the SYMPTOM DUMP:

IEA995I SYMPTOM DUMP OUTPUT  678

SYSTEM COMPLETION CODE=0C7  REASON CODE=00000000

TIME=11.35.41  SEQ=23429  CPU=0000  ASID=0025

PSW AT TIME OF ERROR  078D0000   8F302944  ILC 6  INTC 07

ACTIVE LOAD MODULE           ADDRESS=0F300000  OFFSET=0000

NAME=LOANSNEW

DATA AT PSW  0F30293EF93340E7  A1C758B0  C04447D0

AR/GR 0: 00000000/00000000_0F38F84F   1: 00025A50/00000000

2: 00000000/00000000_0F38F7C0   3: 00000000/00000000

4: 00000000/00000000_0004E13F   5: 00000000/00000000

6: 00000000/00000000_0004E038   7: 00000000/00000000

8: 00000000/00000000_0F3890B8   9: 00000000/00000000

A: 00000000/00000000_0F300144   B: 00000000/00000000

C: 00000000/00000000_0F3000FC   D: 00000000/00000000

E: 00000000/00000000_0F38F7C0   F: 00000000/FFFFFFFF

END OF SYMPTOM DUMP

 

PSW: 078D0000   8F302944 Instruction length: ILC=06 Interruption code: INTC 07

The second word of the PSW is 8F302944. The first number, 8, indicates that this program is

executing in 31-bit mode. In other words, this program runs above the 16 megabyte line. The

number 8 in binary is 1000 which indicates the addressing mode bit 32 is ON. A value of zero

decimal would be binary zero, 0000, indicating that the addressing mode bit 32 was OFF,

which identifies that this location was below the 16 bit line, or in 24-bit mode.

The remaining data points to the next instruction to be executed, in this case, 8F302944. For

the sake of correctness the full address would be 0F302944.

Subtracting the instruction length value (ILC=06), in this case, 6, from the PSW address, would result in F30293E, which would point to the failing instruction as follows:

DATA AT PSW  0F30293EF93340E7  A1C7

This Assembler instruction has 6 bytes:

F9 – CP (Compare decimal) operation code

       3 – length 4 of First operand data

3 – length 4 of Second  operand data

4 –  Base register R4 of  First operand address

0E7 – Displacement D1 of  First operand address

       A –  Base register R10 of  Second  operand address

1C7 – Displacement D2 of  Second operand address

Calculating First and Second operand addresses:

First operand address = R4 + D1 = 4E13F + 0E7 = 4E226

Second  operand address = R10 + D2 = F300144 + 1C7 = F30030B

To find  the interruption code meaning in PSW  (INTC 07= Data exception)  look at Program-Interruption Codes List:

Code

(Hex)

Condition

0001 Operation exception

0002 Privileged-operation exception

0003 Execute exception

0004 Protection exception

0005 Addressing exception

0006 Specification exception

0007 Data exception

0008 Fixed-point-overflow exception

0009 Fixed-point-divide exception

000A Decimal-overflow exception

000B Decimal-divide exception

000C HFP-exponent-overflow exception

000D HFP-exponent-underflow exception

000E HFP-significance exception

000F HFP-floating-point-divide exception

0010 Segment-translation exception

0011 Page-translation exception

0012 Translation-specification exception

0013 Special-operation exception

0015 Operand exception

0016 Trace-table exception

001C Space-switch event

001D HFP-square-root exception

001F PC-translation-specification exception

0020 AFX-translation exception

0021 ASX-translation exception

0022 LX-translation exception

0023 EX-translation exception

0024 Primary-authority exception

0025 Secondary-authority exception

0028 ALET-specification exception

0029 ALEN-translation exception

002A ALE-sequence exception

002B ASTE-validity exception

002C ASTE-sequence exception

002D Extended-authority exception

0030 Stack-full exception

0031 Stack-empty exception

0032 Stack-specification exception

0033 Stack-type exception

0034 Stack-operation exception

0038 ASCE-type exception

0039 Region-first-translation exception

003A Region-second-translation exception

003B Region-third-translation exception

0040 Monitor event

0080 PER event (code may be combined with another code)

0119 Crypto-operation exception

 

          2.3. DUMP investigation of failing Assembler  instruction

To find the failing instruction  in the dump do the following:

?  jlo0595 – Enter the dump with:

  S SYSABEND STEP1              101 BCA1MGP  A LOCAL               89,825

Find the failing instruction position  in the dump using SYMPTOM DUMP information (F30293E):

F  F302920 – Goto   F30293EF93340E7A1C7 – the  failing instruction (CP – compare decimal).

Find the second operand data in the dump using the calculated address above(F30030B):

F F300300 –  Goto   F30030B – found 4 bytes: 1900000F – The Second operand data (4 decimal packed bytes) are  OK.

Find the first  operand data in the dump using the calculated address above(4E226):

F 4E220 – Goto 4E226  – found 4 bytes: 00000C00 – First operand data are not correct decimal packed  data –   an   invalid   sign  0 (not F, C, or D) which  is the reason for Data exception of CP instruction to occur.

 

          2.4. Program LOANSNEW compilation with  job COBBATCH  listing investigation

 

To find out what is  wrong with   First operand data,   a  logic  from  PGM=LOANSNEW is  needed. The source member of program  LOANSNEW in BCI05.lib.base.source library  is compiled  using  job COBBATCH with parm= MAP,XREF,LIST to produce  listing as follows :

 

//COBBATCH JOB (ACCTNUM),’CORNERST’,

//     USER=,

//     GROUP=,

//     PASSWORD=,

//         TIME=1440,

//         NOTIFY=&SYSUID,

//         REGION=6500K,

//         CLASS=B,

//         MSGCLASS=X,

//         MSGLEVEL=(1,1)

//*——————————————————————-

//*  COBOL JCL – 07/2003                                         –

//*                                                                  –

//*  CHANGE PARMS BELOW:                                             –

//*  BCCSLIB  = SOURCE LIBRARY                                       –

//*  BCCTLOAD = LOAD LIBRARY                                         –

//*  BCCMEMBR = SOURCE AND OUTPUT MEMBER NAME                        –

//*——————————————————————-

//       SET  BCCSLIB=‘BCI05.LIB.BASE.SOURCE‘     ** SOURCE LIBRARY

//       SET  BCCCPBK=’BCI05.LIB.BASE.COPY’       ** COPYBOOK LIBRARY

//       SET  BCCTLOAD=’BCI05.LIB.BASE.LOAD’      ** LOAD LIBRARY

//       SET  BCCTOBJ=’BCI05.LIB.BASE.OBJECT’     ** OBJ LIBRARY

//       SET  BCCMEMBR=LOANSNEW

//*——————————————————————-

//*- JCL BELOW                                                       –

//*——————————————————————-

//*- COBOL BATCH COMPILE         – 07/03                             –

//*——————————————————————-

//COBOL   EXEC PGM=IGYCRCTL,REGION=2048K,PARM=(LIB,MAP,XREF,LIST)

//STEPLIB  DD  DSNAME=IGY.SIGYCOMP,

//             DISP=SHR

//SYSPRINT DD SYSOUT=*

//SYSUT1   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT2   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT3   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT4   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT5   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT6   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT7   DD UNIT=VIO,SPACE=(CYL,(5,1))

//SYSUT2   DD UNIT=SYSDA,SPACE=(CYL,(5,1))

//SYSLIN   DD DSN=&&LOADSET,DISP=(MOD,PASS,DELETE),

//            DCB=BLKSIZE=800,

//            UNIT=VIO,SPACE=(TRK,(15,5),RLSE)

//SYSLIB   DD DSN=&BCCCPBK,DISP=SHR

//SYSIN    DD DSN=&BCCSLIB(&BCCMEMBR),DISP=SHR

//*

//*LINKEDT EXEC PGM=HEWL,REGION=1024K,

//LINKEDT EXEC PGM=HEWL,REGION=1024K,PARM=’XCAL’,

//            COND=(7,LT)

//SYSLIB   DD DSN=CEE.SCEELKED,DISP=SHR

//         DD DSN=&BCCTLOAD,DISP=SHR

//         DD DSN=&BCCTOBJ,DISP=SHR

//SYSUT1   DD UNIT=VIO,SPACE=(CYL,(10,5))

//SYSLMOD  DD DSN=&BCCTLOAD(&BCCMEMBR),DISP=SHR

//SYSPRINT DD SYSOUT=*

//SYSLIN   DD DSN=&&LOADSET,DISP=(OLD,DELETE,DELETE),

//            UNIT=VIO

//*

 

To investigate the compiled  listing do the following:

In TSO/ISPF – sd.st – enter:  COBBATCH JOB04480 IBMUSER     1 PRINT      B CC 0000     2956   and  Assembler listing is  found with:  s  SYSPRINT COBOL              101 IBMUSER  X LOCAL                5,448   where  could  be found  the failing instruction at address 293E  (From     DATA AT PSW  address  F30293E is subtracted  0F300000  /ACTIVE LOAD MODULE ADDRESS/  above).

Enter F 293E  –   293E  F933 40E7 A1C7          CP    231(4,4),455(4,10)      DATE-CONTRACT

The failing  Assembler instruction ‘CP  231(4,4),455(4,10)      DATE-CONTRACT’ is the same found in the dump (F93340E7A1C7) at address F30293E.  

The error  field DATE-CONTRACT (the first operand data)  is compared  with the  correct second operand data  1900000F.  The field DATE-CONTRACT is found  in source program  member LOANSNEW in BCI05.lib.base.source library  as LAKMSTR record structure of LAKMSTR file with  DSN=KCI08.D0595.LAKMSTR during execution of job JLO0595 (in 2.1 above)  and is  defined   like  decimal packed field  “05 DATE-CONTRACT               PIC S9(07)          COMP-3.” as follows bellow:

 

FD  LAKMSTR – ( //LAKMSTR  DD DSN=KCI08.D0595.LAKMSTR,DISP=SHR – in job JLO0595)                                                    

RECORD VARYING FROM 2294 TO 14800 DEPENDING ON REC-LEN.

01  LAKM-RECORD.

02 LAKM-LAS-ROOT-SEGMENT.

——————————————

 

04 LAKM-seg00-len               PIC 9(4) binary.

04 LAKM-seg00-nbr               PIC X(1).

04 LAKM-KEY.

05 LAKM-KEY-BANK              PIC X(2).           

         05 LAKM-KEY-APL               PIC X(1).           

         05 LAKM-KEY-ACC               PIC X(8).

04 LAKM-STATUS                  PIC X(1).

04 LAKM-FEE-status              PIC X(1).

……………………..

For  records with  variable buffer length , the length of the  buffer is defined after decimal position 230 (231-232):

* ——–                    – (len = 230)

04 LAKM-BUF-LEN   PIC 9(4) binary. /2 bytes mark length of the variable buffer in the record/

04 LAKM-BUF.         /start of the  variable buffer/

05 filler occurs 1 to 240 depending on LAKM-BUF-LEN

PIC X(1).

……………………..

 

* ——– LAKM-DATES-SEGMENT – seg00-len + 1 + 219 (len = 64)

04 LAKM-DATES.

05 DATE-ACCRUED-THRU           PIC S9(07)          COMP-3.

05 DATE-2                      PIC S9(07)          COMP-3.

05 DATE-CLOSED                 PIC S9(07)          COMP-3.

05 DATE-CONTRACT               PIC S9(07)          COMP-3.

……………………..

 

The problem is how to find  the record position of the  wrong field DATE-CONTRACT (First operand data) and  in   which record   of the VSAM  file KCI08.D0595.LAKMSTR could be found?

Going to  the Dump at First operand address  4E226  – 4 bytes are  found: 00000C00 (the First operand data that are not correct decimal packed  data). To find the start of  the record in the Dump we need some file KCI08.D0595.LAKMSTR information  in HEX  using Ditto function of TSO/ISPF and to  copy the first 4 bytes that are equal for all records: X’ 00FF0066’.

From address  4E226 position  of the Dump enter: F 00FF0066 prev  – at address 4E038 is found  the start of the error LAKMSTR record as follows:

00FF0066 00180000 00000000 0823C180 00800000 …. –  where 11 bytes  field 6600180000000000000823 is the record key  of  the file KCI08.D0595.LAKMSTR according the LAKMSTR record description (11 bytes – LAKM-KEY-BANK + LAKM-KEY-APL + LAKM-KEY-ACC) above.

Using record  key 6600180000000000000823 in   TSO/ISPF Ditto function    browse  file LAKMSTR to locate the failed record as follows:

Enter on Command ===> f  X’6600180000000000000823′ and the record  is found:

RBA 26090        Key X’6600180000000000000823′        Col 1        Format HEX

RBA        Len      1 . . < 5 = = = =10 = = = > 5 . . . .20 . . . . 5 . . . .30

26090       587    00FF006600180000000000000823C1800080000000000000000000000000

To calculate the position  of field DATE-CONTRACT (first operand data) in the found record  using  the Cobol program listing,  we should add  after  decimal position 230  two bytes (231-232) to  find the buffer length into  the found record (which is x’001F’ = decimal 31):

230 . . . . …….5

00001F25F1E3

Then after  230 + 2 + 31 (LAKM-BUF-LEN)  we have to  add   219 ( previous fields length  according * ——– LAKM-DATES-SEGMENT – seg00-len + 1 + 219 (len = 64)) and 3 fields before field  DATE-CONTRACT /+ 4 (DATE-ACCRUED-THRU) + 4 (DATE-2) + 4(DATE-CLOSED)/  to calculate total displacement from the record start = 230 + 2 + 31 + 219  + 4 + 4 + 4 =  494 (x’1EE’) and find at 495 position the wrong 4 bytes field (00000C00) in the record:

494 . . . . . . .

  0000000C00

The same 4 bytes (00000C00) are found  with the First operand address   4E226 within the Dump.

Obviously this is the same error field in the record  with  invalid decimal packed data 00000C00 in the Dump that caused the ABEND  Data exception.  

The position  of field DATE-CONTRACT (first operand data) in the found record may be calculated without refering to Cobol program listing if  we know the start address of the error LAKMSTR record in the Dump. From address  4E226   of the first operand data subtract the start address 4E038 of the record in the  Dump and the result is the displacement from the record start = x’1EE’ – decimal 494 (the same asabove).

          2.5. Error repare in the LAKMSTR record

To have   an error in the record of LAKMSTR file with  DSN=KCI08.D0595.LAKMSTR   two cases    are possible (for  records with  variable buffer length after decimal position 230 as it is in this example):

–        First – the length of the buffer LAKM-BUF-LEN in the record  may be  wrong and all subsequent fields are shifted  in wrong way.

–       Second – (if  the length of the buffer is OK) then the contents of the field in the record  may be  wrong.

               2.5.1. Buffer length error repare  in the LAKMSTR record

Following the first case, we investigated  the field DATE-CLOSED  which is before field DATE-CONTRACT in the record structure and we  found  that field DATE-CONTRACT should follow field DATE-CLOSED  (19950750 – as defined in the record structure) at  494 position (one position before    495 in our case) as follows.

First enter – Ditto edit – VSAM – file – KCI08.D0595.LAKMSTR – in HEX.

Then locate the record  with

Command ===>  f  X’6600180000000000000823′

Using PF5 go to position 230  as follows:

 

The LAKM-BUF-LEN  at  position 231  (two bytes 231-232 that are  001F = 31 should be changed to 001E = 30):

230 . . . . …….5

00001F25F1E3 – old

00001E25F1E3 – new (changed)

After changing LAKM-BUF-LEN field with  TSO/ISPF – Ditto – edit VSAM data function to 001E the problem disappeared. Job JLO0595   finished  OK  with  CC 0000.

To verify whether Buffer length field is correct go to the   located record with Ditto browse – VSAM – file – KCI08.D0595.LAKMSTR – in HEX. Using PF5 go to position 232(end of  Buffer length field ) + 31(error length of Buffer length field) = 263  to find that this is not the last buffer position (the last buffer position of this record is = 262, and the next byte  is x’08’ as for all other records of the file according their Buffer length field). Then correct  31(error length of Buffer length field) to 30 (x’ 001E’) and submit  job JLO0595   again.

 

               2.5.2.  Error field repare in the LAKMSTR record

Following the second  case,  when  the problem with Data exception (ABEND S0C7) in the first case is solved  but ABEND S0C7 continue to appear on the next JLO0595 execution,   the First operand data location should be investigated again.

In TSO/ISPF – sd.st –  do the following for the started again  job jlo0595:

S   jlo0595 – analysis the SYMPTOM DUMP again:

IEA995I SYMPTOM DUMP OUTPUT  351

SYSTEM COMPLETION CODE=0C7  REASON CODE=00000000

TIME=11.17.31  SEQ=23206  CPU=0000  ASID=0025

    PSW AT TIME OF ERROR  078D0000   8F302B02  ILC 6  INTC 07

ACTIVE LOAD MODULE           ADDRESS=0F300000  OFFSET=0000

NAME=LOANSNEW

DATA AT PSW  0F302AFCF93340E3  A1C758B0  C04447D0

AR/GR 0: 00000000/00000000_0F38F84F   1: 00025A50/00000000

2: 00000000/00000000_0F38F7C0   3: 00000000/00000000

4: 00000000/00000000_0004E13E   5: 00000000/00000000

6: 00000000/00000000_0004E038   7: 00000000/00000000

8: 00000000/00000000_0F3890B8   9: 00000000/00000000

A: 00000000/00000000_0F300144   B: 00000000/00000000

C: 00000000/00000000_0F3000FC   D: 00000000/00000000

E: 00000000/00000000_0F38F7C0   F: 00000000/FFFFFFFF

END OF SYMPTOM DUMP

The PSW address of failing instruction is  on  another address in the dump and it is changed (to 2AFC) and the CP(Compare decimal)  instruction has different contents (F93340E3A1C7). The first operand  address is changed  to   4E221 (4E13E + E3)    but  the second operand address is the same  F30030B  (F300144 + 1C7).

Going  to the same  Assembler listing  (s  SYSPRINT COBOL              101 IBMUSER  X LOCAL                5,448)     the failing instruction could be found at address 2AFC  (From  first operand address  F302AFC is subtracted  0F300000  (ACTIVE LOAD MODULE   ADDRESS) above.

2AFC  – at   2AFC  ‘F933 40E3 A1C7          CP    227(4,4),455(4,10)      DATE-CLOSED’

The failing  Assembler instruction ‘ CP  227(4,4),455(4,10)      DATE- CLOSED’  is same as the found in the dump (F93340E3A1C7) at address F302AFC.  At first operand address  4E221  the data field is  19950750 – an   invalid   sign  0 (not F, C, or D) which  is the reason for Data exception of CP instruction to occur.

The error   field  DATE- CLOSED is compared  with the  correct second operand data  1900000F.  The field DATE- CLOSED is found  in source program  member LOANSNEW in BCI05.lib.base.source library  in  LAKMSTR record structure of LAKMSTR file with  DSN=KCI08.D0595.LAKMSTR during execution of job JLO0595 (in 2.1 above)  as  decimal packed field  “05 DATE-CLOSED                 PIC S9(07)          COMP-3.”  as follows:

FD  LAKMSTR  – //LAKMSTR  DD DSN=KCI08.D0595.LAKMSTR,DISP=SHR                                                      

RECORD VARYING FROM 2294 TO 14800 DEPENDING ON REC-LEN.

01  LAKM-RECORD.

……………………..

* ——– LAKM-DATES-SEGMENT – seg00-len + 1 + 219 (len = 64)

04 LAKM-DATES.

05 DATE-ACCRUED-THRU           PIC S9(07)          COMP-3.

05 DATE-2                      PIC S9(07)          COMP-3.

05 DATE-CLOSED                 PIC S9(07)          COMP-3.

05 DATE-CONTRACT               PIC S9(07)          COMP-3.

 

To find  the start of the failed LAKMSTR record at dump address 4E038  from location of the first operand address  4E221  enter F 00FF0066  prev  as follows:

00FF006600180000000000000823C180 …. –  where field 6600180000000000000823 is the record key of the error LAKMSTR record in the dump.

Using record  key 6600180000000000000823 with  Ditto  and browsing  file LAKMSTR the failed record is located as follows:

First enter – Ditto edit – VSAM – file – KCI08.D0595.LAKMSTR – in HEX.

Then locate the record  with: 

Command ===>  f  X’6600180000000000000823′

The record is located:

RBA 26090        Key X’6600180000000000000823′        Col 1        Format HEX

RBA        Len      1 . . < 5 = = = =10 = = = > 5 . . . .20 . . . . 5 . . . .30

26090       587    00FF006600180000000000000823C1800080000000000000000000000000

To find the error field position  in the located record, from the first operand   address 4E221  subtract  the start address 4E038 of the error  record in the dump:

4E221 – 4E038 = x’1E9’ = decimal 489 – the 489 should be added to the start of the error record and  the error field is found  at position 490 (4 HEX  bytes – 19950750) the same as   at first operand address  4E221  in the dump above (invalid sign  0 – not  F, C, or D).  After changing 4 bytes (19950750) at position 490  with 1995075C,  the problem is  resolved and the program finished ok with CC 0000 and final result in PRINT01.KCI01.LOAN0395.TXT:

BROWSE    PRINT01.KCI01.LOAN0395.TXT                 Line 00000000 Col 001 080

            110001 for officers long time  0000008000000828 0000008BGN4040404

150001for enterprizes 0000008000000812 0000008BGN4040404

180001..DEFAULT TYPE **BGL0000000000000823 0000008BGL4040404

           

     3. Dump analysis for  Cobol  program execution  without source available

          3.1. Provoke program dump of PGM=DAU9000   execution  (D0595_DAKMSTR – MAY 1995, for Account=0000002000087811)

To produce  dump on ABEND for DAKMSTR file error  during execution of Cobol program PGM=DAU9000 (only load module without source available), insert the statement //SYSABEND DD SYSOUT=A or //SYSUDUMP DD   SYSOUT=* in the following JCL of job  CKPRSTEF:

//CKPRSTEF JOB (9999),

//        ,

//         REGION=0M,

//         MSGCLASS=X,MSGLEVEL=(1,1)

//JOBLIB DD   DSN=KCI03.LIB.PROD.LOAD,DISP=SHR

//       DD   DSN=KCI33.LIB.PROD.LOAD,DISP=SHR

//* SET1   ZADAJTE MESEC I GODINA VAV VIDA HLDATA=DMMYY

//SET1     SET   HLDATA=D0595          MAY  1995         

//* SET1     SET   HLDATA=D030695    03.JUNE  1995

//* SET1     SET   HLDATA=D070795    07.JULY  1995

//* SET1     SET   HLDATA=D310795    31.JULY  1995

//* SET1     SET   HLDATA=D0895    AUGUST   1995

//* SET1     SET   HLDATA=D0196    JANUARY  1996

//* SET1     SET   HLDATA=D0496      APRIL  1996

//* SET1     SET   HLDATA=D0696       JUNE  1996

//* SET1     SET   HLDATA=D0996   SEPTEMBER 1996

//* SET1     SET   HLDATA=D0697       JUNE  1997

//* SET1     SET   HLDATA=D1097     OCTOBER 1997

//* SET1     SET   HLDATA=D1197    NOVEMBER 1997

//* SET1     SET   HLDATA=D0298    FEBRUARY 1998

//* SET1     SET   HLDATA=D0598        MAY  1998

//* SET1     SET   HLDATA=D0698       JUNE  1998

//* SET1     SET   HLDATA=D1298    DECEMBER 1998

//* SET1     SET   HLDATA=D0599       MAY   1999

//* SET1     SET   HLDATA=D0699       JUNE  1999

//* SET1     SET   HLDATA=D0899     AUGUST  1999

//* SET1     SET   HLDATA=D1199    NOVEMBER 1999

//* SET1     SET   HLDATA=D1299    DECEMBER 1999

//* SET1     SET   HLDATA=D0300       MARCH 2000

//* SET1     SET   HLDATA=D0500       MAY   2000

//* SET1     SET   HLDATA=D0700       JULY  2000

//* SET1     SET   HLDATA=D0800      AUGUST 2000

//* SET1     SET   HLDATA=D0900   SEPTEMBER 2000

//* SET1     SET   HLDATA=D1200    DECEMBER 2000

//* SET1     SET   HLDATA=D0101    JANUARY  2001

//* SET1     SET   HLDATA=D0201   FEBRUARY  2001

//* SET1     SET   HLDATA=D0301      MARCH  2001

//* SET1     SET   HLDATA=D0401      APRIL  2001

//* SET1     SET   HLDATA=D0501       MAY   2001

//* SET1     SET   HLDATA=D0801      AUGUST 2001

//* SET1     SET   HLDATA=D0901   SEPTEMBER 2001

//* SET1     SET   HLDATA=D1001    OCTOBER  2001

//* SET1     SET   HLDATA=D1101    NOVEMBER 2001

//* SET1     SET   HLDATA=D1201   1 JANUARY  2002/D1201/

//* SET1     SET   HLDATA=D0202    FEBRUARY 2002

//* SET1     SET   HLDATA=D0502        MAY  2002

//* SET1     SET   HLDATA=D0602        JUNE 2002

//* SET1     SET   HLDATA=D0702        JULY 2002

//* SET1     SET   HLDATA=D1002     OCTOBER 2002

//* SET1     SET   HLDATA=D1202    DECEMBER 2002

//* SET1     SET   HLDATA=D0103    JANUARY  2003

//* SET1     SET   HLDATA=D0403    APRIL    2003

//* SET1     SET   HLDATA=D0603        JUNE 2003

//* SET1     SET   HLDATA=D0903   SEPTEMBER 2003

//*

//DAU9000 EXEC PGM=DAU9000

//SYSOUT   DD   SYSOUT=*

//SYSPRINT DD   SYSOUT=*

//SYSUDUMP DD   SYSOUT=*  or   //SYSABEND DD SYSOUT=A  

//BAKMSTR  DD   DSN=KCI09.&HLDATA..BAKMSTR,DISP=SHR

//CSKCONF  DD   DSN=KCI09.&HLDATA..CSKCONF,DISP=SHR

//DAKMSTR  DD   DSN=KCI08.D0595.NEWDAKMS,DISP=SHR      

//DAKTR01  DD   DSN=KCI09.&HLDATA..DAKTR01,DISP=SHR

//* DAKTR02  DD   DSN=KCI09.&HLDATA..DAKTR02,DISP=SHR

//* DAKTR03  DD   DSN=KCI09.&HLDATA..DAKTR03,DISP=SHR

//* DAKTR04  DD   DSN=KCI09.&HLDATA..DAKTR04,DISP=SHR

//* DAKTR05  DD   DSN=KCI09.&HLDATA..DAKTR05,DISP=SHR

//* DAKTR06  DD   DSN=KCI09.&HLDATA..DAKTR06,DISP=SHR

//* DAKTR07  DD   DSN=KCI09.&HLDATA..DAKTR07,DISP=SHR

//DAKTRAN  DD   DSN=KCI09.&HLDATA..DAKTRAN,DISP=SHR

//* DAKTR01  DD   DSN=KCI09.D0895.DAKTR01,DISP=SHR FOR HLDATA=D310795

//* DAKTRAN  DD   DSN=KCI09.D0895.DAKTRAN,DISP=SHR FOR HLDATA=D310795

//FSCARDI DD *

6600020000002000087811000000200008781100000000      00001Y           

/*

//*

 

          3.2. PSW (Program Status Word)   investigation of DAKMSTR error

In TSO/ISPF – sd.st –  do the following:

S  CKPRSTEF (D0595 – MAY 1995, for Account=0000002000087811) – analysis the SYMPTOM DUMP :

IEA995I SYMPTOM DUMP OUTPUT  784

SYSTEM COMPLETION CODE=0C7  REASON CODE=00000000

TIME=13.58.28  SEQ=23744  CPU=0000  ASID=0035

PSW AT TIME OF ERROR  078D0000   0000D42E  ILC 6  INTC 07

ACTIVE LOAD MODULE           ADDRESS=00007630  OFFSET=0000

NAME=DAU9000

DATA AT PSW  0000D428F843D7D8  65D0DE0A  D7C8D7D8

AR/GR 0: 80BFCB60/00016A88   1: 00000000/000427F8

2: 00000000/000097A0   3: 00000000/00016D60

4: 00000000/0000CCB6   5: 00000000/0000CA86

6: 00000000/00019DB0   7: 00000000/0001BDB0

8: 00000000/000077A0   9: 00000000/00016938

A: 00000000/0001DDB0   B: 00000000/00015F72

C: 00000000/0000772C   D: 00000000/00042030

E: 00000000/500163C2   F: 01000002/00000000

END OF SYMPTOM DUMP

Subtracting the instruction length value (ILC=06), in this case, 6, from the PSW address, would result in D428, which would point to the failing instruction with Interruption code (INTC=07 – Data exception ) as above:

DATA AT PSW  D428  – F843D7D8  65D0DE0A  D7C8D7D8

 

The PSW address of failing ZAP  instruction is D428 and the ZAP (98)  instruction has the following  contents (F843D7D865D0). The first operand data has 5 bytes at    address 42808 (42030 + 7D8)    and   the second operand  data has 4 bytes  at address    1A380  (19DB0 + 5D0).

This Assembler instruction has 6 bytes as follows:

F8 – ZAP (move one packed number /Sec op/  to another /First op/) operation code

       4 – length 5 of First operand data

3 – length 4 of Second  operand data (extending from 4 to 5 bytes and check the sign)

D -  Base register R13 of  First operand address

7D8 – Displacement D1 of  First operand address

       6 –  Base register R6 of  Second  operand address

5D0 – Displacement D2 of  Second operand address

Calculating First and Second operand addresses:

First operand address = R13 + D1 = 42030 + 7D8= 42808

Second  operand address = R6 + D2 = 19DB0 + 5D0= 1A380

 

          3.3. DUMP investigation of  the failing Assembler  instruction and DAKMSTR repare

To find the failing instruction  in the dump do the following:

?  CKPRSTEF (D0595 – MAY 1995, for Account=0000002000087811)  – Enter the dump with:

  S SYSUDUMP DAU9000            104 BCA1MGP  X LOCAL               85,871

Find the failing instruction position  in the dump using SYMPTOM DUMP information (DATA AT PSW  0000D428):

F  D420 – Goto  D428F843D7D865D0 – the  failing instruction ZAP (moving  packed number of second operand to First operand and check sign).

Find the second operand data in the dump using the calculated address above(1A380):

F 1A380 – found 4 bytes: 19952120 – Second operand data (4 decimal packed bytes) are not OK, detected wrong sign of decimal packed data /an invalid sign  0 – not F, C, or D/  which caused  the  Data exception of ZAP  instruction to occur.

 

Find the first  operand data in the dump using the calculated address above(42808):

F 42800 – Go to 42808  – found 5 bytes: 000000000C – First operand data are  correct decimal packed  data – has  sign  C /but  this data are  not verified for validity/.

How to find Second operand error data location in which file  it is  and how to correct it?

From CKPRSTEF JOB the Cobol program PGM=DAU9000 JES produces   JCL source SYSOUT using   the following input  files and data:

//BAKMSTR  DD   DSN=KCI09.d0595.BAKMSTR,DISP=SHR

//CSKCONF  DD   DSN=KCI09. d0595.CSKCONF,DISP=SHR

//DAKMSTR  DD   DSN=KCI08.d0595.NEWDAKMS,DISP=SHR

//DAKTR01  DD   DSN=KCI09.d0595.DAKTR01,DISP=SHR

//DAKTRAN  DD   DSN=KCI09.&HLDATA.DAKTRAN,DISP=SHR

//FSCARDI DD *

6600020000002000087811000000200008781100000000      00001Y

The error record in the dump is one of the above files.

To find the file name, enter TSO/ISPF Ditto function for each file  and Check with the key  X’6600020000002000087811‘ from  CKPRSTEF JOB input data:

//FSCARDI DD *

6600020000002000087811000000200008781100000000      00001Y

This key is found only for the file  //DAKMSTR  DD   DSN=KCI08.d0595.NEWDAKMS, DISP=SHR.

To locate the start of the error record of DAKMSTR  in the dump, use the information 660002 (start of the record key) from   CKPRSTEF JOB input data as follows:

First  find  the dump address  of the Second operand with error at address  1A380 (4 bytes – 19952120):

F 1A380– found 4 bytes:  19952120

From this location  enter  F 660002 prev to find the  start of the DAKMSTR record in the dump at address  1A26C:  6600020000002000087811…..

To find the start of the Second  operand data (8 bytes)  in the record   substract  1A26C (Error rec address)  from 1A380 (Sec oper address)    and we  find x’114’ in decimal 276 displacement from the start of the record 6600020000002000087811  in file  KCI08.d0595.NEWDAKMS.

First enter – Ditto edit – VSAM – file – KCI08.d0595.NEWDAKMS – in HEX.

Then locate the record  with

Command ===>  f  x’6600020000002000087811’

Using PF5 go to position 277  (+ decimal 276 displacement)  as follows:

277 . . . .80

19952120

 

To find the last byte (with the sign) add + 3 bytes  to 277 (or 276+4)  and we find the sign byte at   280 position.

There we may correct the found  error  byte  x’20’ and replace it  with  x’2C’. Then enter PF3.

Submit the job CKPRSTEF  –  job CKPRSTEF     finished OK with   CC 0000.

 

          3.4. Provoke program dump of PGM=DAU9000   execution (D0202_DAKTRAN –  FEBRUARY 2002, for Account=0000001000000110)

 

To produce  dump on ABEND for DAKTRAN file error  during execution of Cobol program PGM=DAU9000 (only load module without source available), insert the statement //SYSABEND DD SYSOUT=A or //SYSUDUMP DD   SYSOUT=* in the following JCL of job  CKPRSTEF:

 

//CKPRSTEF JOB (9999),

//        ,

//         REGION=0M,

//         MSGCLASS=X,MSGLEVEL=(1,1)

//JOBLIB DD   DSN=KCI03.LIB.PROD.LOAD,DISP=SHR

//       DD   DSN=KCI33.LIB.PROD.LOAD,DISP=SHR

//* SET1   ZADAJTE MESEC I GODINA VAV VIDA HLDATA=DMMYY

//* SET1     SET   HLDATA=D0595          MAY  1995

//* SET1     SET   HLDATA=D030695    03.JUNE  1995

//* SET1     SET   HLDATA=D070795    07.JULY  1995

//* SET1     SET   HLDATA=D310795    31.JULY  1995

//* SET1     SET   HLDATA=D0895    AUGUST   1995

//* SET1     SET   HLDATA=D0196    JANUARY  1996

//* SET1     SET   HLDATA=D0496      APRIL  1996

//* SET1     SET   HLDATA=D0696       JUNE  1996

//* SET1     SET   HLDATA=D0996   SEPTEMBER 1996

//* SET1     SET   HLDATA=D0697       JUNE  1997

//* SET1     SET   HLDATA=D1097     OCTOBER 1997

//* SET1     SET   HLDATA=D1197    NOVEMBER 1997

//* SET1     SET   HLDATA=D0298    FEBRUARY 1998

//* SET1     SET   HLDATA=D0598        MAY  1998

//* SET1     SET   HLDATA=D0698       JUNE  1998

//* SET1     SET   HLDATA=D1298    DECEMBER 1998

//* SET1     SET   HLDATA=D0599       MAY   1999

//* SET1     SET   HLDATA=D0699       JUNE  1999

//* SET1     SET   HLDATA=D0899     AUGUST  1999

//* SET1     SET   HLDATA=D1199    NOVEMBER 1999

//* SET1     SET   HLDATA=D1299    DECEMBER 1999

//* SET1     SET   HLDATA=D0300       MARCH 2000

//* SET1     SET   HLDATA=D0500       MAY   2000

//* SET1     SET   HLDATA=D0700       JULY  2000

//* SET1     SET   HLDATA=D0800      AUGUST 2000

//* SET1     SET   HLDATA=D0900   SEPTEMBER 2000

//* SET1     SET   HLDATA=D1200    DECEMBER 2000

//* SET1     SET   HLDATA=D0101    JANUARY  2001

//* SET1     SET   HLDATA=D0201   FEBRUARY  2001

//* SET1     SET   HLDATA=D0301      MARCH  2001

//* SET1     SET   HLDATA=D0401      APRIL  2001

//* SET1     SET   HLDATA=D0501       MAY   2001

//* SET1     SET   HLDATA=D0801      AUGUST 2001

//* SET1     SET   HLDATA=D0901   SEPTEMBER 2001

//* SET1     SET   HLDATA=D1001    OCTOBER  2001

//* SET1     SET   HLDATA=D1101    NOVEMBER 2001

//* SET1     SET   HLDATA=D1201   1 JANUARY  2002/D1201/

//SET1     SET   HLDATA=D0202    FEBRUARY 2002         

//* SET1     SET   HLDATA=D0502        MAY  2002

//* SET1     SET   HLDATA=D0602        JUNE 2002

//* SET1     SET   HLDATA=D0702        JULY 2002

//* SET1     SET   HLDATA=D1002     OCTOBER 2002

//* SET1     SET   HLDATA=D1202    DECEMBER 2002

//* SET1     SET   HLDATA=D0103    JANUARY  2003

//* SET1     SET   HLDATA=D0403    APRIL    2003

//* SET1     SET   HLDATA=D0603        JUNE 2003

//* SET1     SET   HLDATA=D0903   SEPTEMBER 2003

//*

//DAU9000 EXEC PGM=DAU9000

//SYSOUT   DD   SYSOUT=*

//SYSPRINT DD   SYSOUT=*

//SYSUDUMP DD   SYSOUT=*  or   //SYSABEND DD SYSOUT=A  

//BAKMSTR  DD   DSN=KCI09.&HLDATA..BAKMSTR,DISP=SHR

//CSKCONF  DD   DSN=KCI09.&HLDATA..CSKCONF,DISP=SHR

//DAKMSTR  DD   DSN=KCI09.&HLDATA..DAKMSTR,DISP=SHR

//DAKTR01  DD   DSN=KCI09.&HLDATA..DAKTR01,DISP=SHR

//DAKTR02  DD   DSN=KCI09.&HLDATA..DAKTR02,DISP=SHR

//DAKTR03  DD   DSN=KCI09.&HLDATA..DAKTR03,DISP=SHR

//DAKTRAN  DD   DSN=KCI08.D0202.DAKTRAN,DISP=SHR

//FSCARDI DD *

6600020000001000000110000000100000011000000000      00001Y 

/*

//*

 

          3.5. PSW (Program Status Word)   investigation of DAKTRAN error

 

For PSW investigation in TSO/ISPF – sd.st –  do the following:

S  CKPRSTEF (D0202_DAKTRAN –  FEBRUARY 2002, for Account=0000001000000110) – analysis the SYMPTOM DUMP:

IEA995I SYMPTOM DUMP OUTPUT  308

SYSTEM COMPLETION CODE=0C7  REASON CODE=00000000

TIME=14.34.25  SEQ=23949  CPU=0000  ASID=0035

PSW AT TIME OF ERROR  078D1000   000156B2  ILC 6  INTC 07

ACTIVE LOAD MODULE           ADDRESS=00007630  OFFSET=0000

NAME=DAU9000

DATA AT PSW  000156AC – F8977B38  6FD5D203  D780D0C8

AR/GR 0: 80BFCB60/000156A6   1: 00000000/000427F8

2: 00000000/000156A6   3: 00000000/0001ADB0

4: 00000000/000097A0   5: 00000000/00016D60

6: 00000000/00019DB0   7: 00000000/0001BDB0

8: 00000000/000077A0   9: 00000000/00016938

A: 00000000/0001DDB0   B: 00000000/00015F72

C: 00000000/0000772C   D: 00000000/00042030

E: 00000000/50015650   F: 00000000/00000000

END OF SYMPTOM DUMP

Subtracting the instruction length value (ILC=06), in this case, 6, from the PSW address, would result in 156AC, which would point to the failing instruction with Interruption code (INTC=07 – Data exception ) as above  ( DATA AT PSW) .

The PSW address of failing ZAP  instruction is 156AC and the ZAP (98)  instruction has the following  contents: F8977B386FD5.

This Assembler instruction has 6 bytes as follows:

F8 – ZAP (move one packed number /Sec op/  to another /First op/) operation code

       9 – length 10 of First operand data

       7 – length 8 of Second  operand data (extending from 8 to 10 bytes and checking  the sign)

7 -  Base register R7 of  First operand address

B38 – Displacement D1 of  First operand address

       6 –  Base register R6 of  Second  operand address

FD5 – Displacement D2 of  Second operand address

Calculating First and Second operand addresses:

First operand address = R7 + D1 = 1BDB0 + B38 = 1C8E8

Second  operand address = R6 + D2 = 19DB0 + FD5 = 1AD85

The first operand data has 10 bytes at    address 1C8E8 and   the second operand  data has 8 bytes  ataddress    1AD85).

          3.6. DUMP investigation of  the failing Assembler  instruction and DAKTRAN repare

 

To find the failing instruction  in the dump do the following:

?  CKPRSTEF (D0202_DAKTRAN –  FEBRUARY 2002, for Account=0000001000000110) – Enter the dump with:

  S SYSUDUMP DAU9000            104 BCA1MGP  X LOCAL               88,988

Find the failing instruction position  in the dump using SYMPTOM DUMP information (DATA AT PSW  000156AC):

F  156A0 – Goto  156ACF8977B386FD5 – the  failing instruction ZAP=F8 (moving  packed number of second operand to First operand and checking sign).

Find the second operand data in the dump using the calculated address above(1AD85):

F 1AD80 –  Goto 1AD85 – found 8 bytes:  0000000000001200 – Second operand data (8 decimal packed bytes) are  not OK, detected wrong sign of decimal packed data /an invalid sign  0 – not F, C, or D/  which caused  the  Data exception of ZAP  instruction to occur.

Find the first  operand data in the dump using the calculated address above(1C8E8):

F 1C8E0 – Goto 1C8E8 – found 10 bytes – 00000000000000000000 – First operand data are  not verified for validity.

How to find Second operand error data location in which file  it is  and how to correct it?

From CKPRSTEF JOB of  Cobol program PGM=DAU9000 JES produces   JCL source SYSOUT using   the following input  files and data:

//BAKMSTR  DD   DSN=KCI09.&HLDATA..BAKMSTR,DISP=SHR

//CSKCONF  DD   DSN=KCI09.&HLDATA..CSKCONF,DISP=SHR

//DAKMSTR  DD   DSN=KCI09.&HLDATA..DAKMSTR,DISP=SHR

//DAKTR01  DD   DSN=KCI09.&HLDATA..DAKTR01,DISP=SHR

//DAKTR02  DD   DSN=KCI09.&HLDATA..DAKTR02,DISP=SHR

//DAKTR03  DD   DSN=KCI09.&HLDATA..DAKTR03,DISP=SHR

//DAKTRAN  DD   DSN=KCI08.D0202.DAKTRAN,DISP=SHR

//FSCARDI DD *

6600020000001000000110000000100000011000000000      00001Y 

/*

//*

The error record in the dump is into one of the above files.

To find the file name, enter TSO/ISPF Ditto function for each file  and Check with the key  X’6600020000001000000110‘ from  CKPRSTEF JOB input data:

//FSCARDI DD *

6600020000001000000110000000100000011000000000      00001Y

This key is found only for the file  // DAKTRAN  DD   DSN=KCI08.d0595. DAKTRAN, DISP=SHR.

To locate the start of the error record of DAKTRAN  in the dump, use the information 660002 (start of the record key) from   CKPRSTEF JOB input data as follows:

First  find  the dump address  of the Second operand with error at address  1AD85 (8 bytes – 0000000000001200):

F 1AD80 –  Goto 1AD85 – found 8 bytes:  0000000000001200

From this location  enter  F 660002 prev to find the  start of the DAKTRAN record in the dump at address  1AD6C:  66000200000010000001102002009C…..

To find the start of the Second  operand data (8 bytes)  in the record   substract  1AD6C(Error rec address)  from 1AD85(Sec oper address)    and we  find x’19’ in decimal 25 displacement from the start of the record 66000200000010000001102002009C  in file  KCI08.D0202.DAKTRAN.

First enter – Ditto edit – VSAM – file – KCI08.D0202.DAKTRAN – in HEX.

Then locate the record  with

Command ===>  f  x’66000200000010000001102002009C’

Using PF5 go to position 26  (+ decimal 25 displacement)  as follows:

 

 

26 . . . . . 30 . . . 33

0000000000001200

 

To find the last byte (with the sign) add + 7 bytes  to 26 (or 25+8)  and we find the sign byte at   33 position.

There we may correct the found  error  byte  x’00’ and replace it with  x’0C’. Then enter PF3.

Submit the job CKPRSTEF  –  job CKPRSTEF     finished OK with   CC 0000.

Incoming search terms:

  • s0c7
  • system completion code=0c7
  • soc7 abend in jcl
  • abend s0c7
  • S0C7 abend
  • system abend code 0c7
  • s0c7 abend in cobol
  • abend 0c7
  • 0c7 abend
  • soc7 abend in cobol

Leave A Reply

Comments

No comments yet, be the first to add one!

7ads6x98yWordPress Login Protected by Clef