Diagnosing EDA198 on OS/390 and z/OS

In this section:

Interpreting Exception Bit Codes

Performing Binary Conversions

Calculating FOCUS Pages Per Track and Tracks Per Cylinder

On OS/390 and z/OS, the EDA198 error codes fall into two sets. The codes beginning with 00 or AA are codes generated by FOCUS. The codes beginning with either EE or FF are the return codes passed from OS/390 and z/OS to FOCUS when a BDAM I/O is attempted but fails.

The most common OS/390 and z/OS allocation/size problems are codes 0000006D (the extension requires a secondary allocation, but the file was allocated with a primary allocation only), 0000006E (the extension or formatting OPEN failed), or 00000070 (writing the required page requires more than 16 extents).

The following table shows the OS/390 and z/OS EDA198 error codes. Note that all codes are in hex.

Error Code

Reason

00000008

Error in Track/IO.

00000064

Page number is negative or zero.

00000065

Page number is greater than 256 megabytes (262143).

00000066

Primary allocation quantity is negative.

00000067

Total number of currently allocated tracks is negative.

00000068

The number of current extents is negative.

00000069

The number of blocks per track is negative or zero (FOCUS error or file not allocated).

0000006A

The number of tracks per cylinder is negative or zero (FOCUS error or file not allocated).

0000006B

Actual number of blocks written is negative.

0000006C

Number of blocks written is incompatible with the amount of allocated space.

0000006D

Extension requires a secondary allocation, but the file was allocated with a primary allocation only.

0000006E

Extension or formatting OPEN failed.

0000006F

File is allocated in units of blocks, but the blocksize is not 4096.

00000070

Writing the required page requires more than 16 extents.

0000AAAA

No more space in FOCUS I/O table.

0000BBBB

A currency error was detected, but the file was not in SU or SU/LOCAL mode or the Master File specifies a suffix of FOC OS, but the file is not on an OS format mini disk.

0000CCCC

Page number is larger than 256 megabytes (262143).

0000EEEE

Insufficient core for FOCUS shadow directory control areas. This error can occur even if the file is not shadowed.

AA00nn01

Track I/O: Nonzero return code from internal conversion routine (TTR to MBBCCHHR). The return code is nn.

AAnnmm02

Track I/O: EXCP did not succeed. nn is the UCBSNS0 return code and mm is the UCBSNS1 return code.

AA000003

Track I/O: No space on the disk for the requested extent. Can be accompanied by a system x37 abend code.

AA000004

Track I/O: All 16 extents are already allocated but another extent was requested.

AA0001nn

nn=01 Nonzero return code from DEVTYPE system macro.

nn=03 Nonzero return code from TRKCALC system macro.

nn=other Return code from unsuccessful OBTAIN system macro.

EExxxxxx

See the table in OS/390 and z/OS Return Codes.

FF000000

Real error explanation is in accompanying EDA986 message. EDA198 is analogous to the system message IEC020I and the EDA986 can be decoded from the appropriate IBM OS/390 and z/OS System Messages manual.

FFxxxxxx

See the table in OS/390 and z/OS Return Codes.


Top of page

Interpreting Exception Bit Codes

Reference:

OS/390 and z/OS Return Codes

To interpret EE or FF error codes, remove the first byte and the last byte from the four-byte string (two hex characters per byte). For example, FF800000 becomes 8000.

Convert these four hex digits into binary (the 8000 becomes 1000000000000000). See Performing Binary Conversions for information on converting hex numbers into their binary equivalents. The bits in this string are numbered from the left starting at zero and ending at 15. Wherever you have a 1 in your string, look up the corresponding error in OS/ 390 and z/OS Return Codes. This table is reproduced from the IBM manual OS/390 and z/OS Data Management Macro Instructions.

There is one column in the OS/390 and z/OS Return Codes table for read operations and one for write operations. The EDA198 message indicates whether FOCUS was reading or writing at the time of the error.


Top of page

Reference: OS/390 and z/OS Return Codes

Exception
Code Bit

READ

WRITE

Reason

0

X

X

Record not found.

1

X

X

Record length check.

2

 

X

Space not found.

3

X

X

Invalid request - see bits 9-15.

4

X

X

Uncorrectable I/O error.

5

X

X

End of data.

6

X

X

Uncorrectable error.

7

 

X

Not read with exclusive control.

8

 

 

Not used.

9

 

X

WRITE to input data set.

10

X

X

Extended search with DCBLIMCT=0.

11

X

X

Block or track requested outside data set.

12

 

X

Attempted to write capacity record.

13

X

X

Specified key as search argument when KEYLEN=0 or no key address supplied.

14

X

X

Request for options not in data control block.

15

 

 

Attempt to add fixed length record with key beginning with hexadecimal FF.


Top of page

Performing Binary Conversions

Example:

Diagnosis #1

Diagnosis #2

To convert a hexadecimal string to binary, take each hex character, look it up in the following table, and concatenate the binary strings.

Hexadecimal Character

Binary String

Hexadecimal Character

Binary String

0

0000

8

1000

1

0001

9

1001

2

0010

A

1010

3

0011

B

1011

4

0100

C

1100

5

0101

D

1101

6

0110

E

1110

7

0111

F

1111

For example, if your four digit hex value is C302, take the binary equivalents from the table (C=1100, 3=0011, 0=0000, and 2=0010) to obtain the binary string 1100001100000010. Using this example (the error bytes from FF800000 being represented as 1000000000000000 in binary), bit zero is set. OS/390 and z/OS Return Codes shows that a 1 in exception code bit position zero means the requested record was not found. Since all the other bits in the string are zero, no other errors were detected.


Top of page

Example: Diagnosis #1

If an EDA data access task abends due to an EDA198 error message, the following message is printed in the EDAPRINT file:

(EDA198) FATAL ERROR IN DATABASE I/O. FOCUS TERMINATING. ERROR
WRITING PAYROLL ,PAGE 241 ,CODE=00000070

The second line of this message indicates that an error occurred while writing to the file PAYROLL and that the task failed to write page number 241, receiving error code 00000070 in the process. Code 00000070 means that writing the page would exceed IBM's restriction of 16 extents to a data set (one primary and up to 15 secondary extents).

Another way to confirm the page number is to look at the allocation using ISPF 3.2. In this case, the file had been allocated with five primary tracks and one secondary track. Thus the maximum file size could be 5+(1*15)=20 tracks. This is on a 3390 disk and 12 pages of a FOCUS file fit on every track of a 3390. Therefore, the highest page that could be stored in the file is 20*12=240, and writing page 241 produces the EDA198 message.


Top of page

Example: Diagnosis #2

If you know why an EDA198 error message occurred, the first thing to do is to check the integrity of the file with a ? FILE command and a REBUILD/CHECK. If the file checks out cleanly and the problem is a disk space issue, obtain a larger disk, clear some files from the existing disk, and/or move the file to another disk that has sufficient free space. If the file does not check out cleanly, you should restore the file from backup and rerun any transactions that changed the data since the backup was taken.

In OS/390 and z/OS, allocate FOCSORT with a larger disk allocation. If you do not explicitly allocate FOCSORT, FOCUS allocates it for you with a default, in cylinders, of five primary and five secondary extents, which gives you a maximum of 5+(5*15)=80 cylinders. You change this default by editing the IBITABLA file located in qualif.EDAPROF.DATA. This file contains comments that describe how to change the default FOCSORT file allocation.


Top of page

Calculating FOCUS Pages Per Track and Tracks Per Cylinder

The following table lists the number of FOCUS pages that can be stored on a track and the number of tracks per cylinder for various IBM disk types (some of which are obsolete now but are included for completeness). With this information, you can calculate various data set capacities once you know the space allocation for the data set and the disk type on which it resides.

Device

4K Blocks/Track

Tracks/Cylinder

2305

3

8

2314

1

20

2319

1

20

3330

3

19

3340

2

12

3350

4

30

3375

8

12

3380

10

15

3390

12

15

9345

10

15


iWay Software