Figure 17 shows an example of a record layout for a file called VSAM99. The key is offset 0 for length 6, and the record contains no redefinition.
02 FILEREC.
03 STAT PIC X.
03 NUMB PIC X(6).
03 NAME PIC X(20).
03 ADDRX PIC X(20).
03 PHONE PIC X(8).
03 DATEX PIC X(8).
03 AMOUNT PIC X(8).
03 COMMENT PIC X(9).
03 COUNTER1 PIC 9999 USAGE COMP-4.
03 COUNTER2 PIC 9999 USAGE COMP-4.
03 ADDLCMT PIC X(30).
Figure 18 gives a full set of conversion macros for file VSAM99. Figure 19 shows the same conversion expressed more briefly, by combining adjoining fields of the same type.
DFHCNV TYPE=INITIAL,CLINTCP=437,SRVERCP=037
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=VSAM99
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=6,LAST=YES
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=00,DATATYP=CHARACTER,DATALEN=1
DFHCNV TYPE=FIELD,OFFSET=01,DATATYP=CHARACTER,DATALEN=6
DFHCNV TYPE=FIELD,OFFSET=07,DATATYP=CHARACTER,DATALEN=20
DFHCNV TYPE=FIELD,OFFSET=27,DATATYP=CHARACTER,DATALEN=20
DFHCNV TYPE=FIELD,OFFSET=47,DATATYP=CHARACTER,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=55,DATATYP=CHARACTER,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=63,DATATYP=CHARACTER,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=71,DATATYP=CHARACTER,DATALEN=9
DFHCNV TYPE=FIELD,OFFSET=80,DATATYP=BINARY,DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=82,DATATYP=BINARY,DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=84,DATATYP=CHARACTER,DATALEN=30,LAST=YES
DFHCNV TYPE=FINAL
DFHCNV TYPE=INITIAL,CLINTCP=437,SRVERCP=037
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=VSAM99
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=6,LAST=YES
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=00,DATATYP=CHARACTER,DATALEN=80
DFHCNV TYPE=FIELD,OFFSET=80,DATATYP=BINARY,DATALEN=4
DFHCNV TYPE=FIELD,OFFSET=84,DATATYP=CHARACTER,DATALEN=30,LAST=YES
DFHCNV TYPE=FINAL
Figure 20 shows a redefined record layout for file VSAM99. Figure 21 shows a set of conversion macros for the redefined record layout in Figure 20.
02 FILEREC.
03 STAT PIC X.
03 NUMB PIC X(6).
03 NAME PIC X(20).
03 ADDRX PIC X(20).
03 PHONE PIC X(8).
03 DATEX PIC X(8).
03 AMOUNT PIC X(8).
03 COMMENT PIC X(9).
03 VARINF1.
03 COUNTER1 PIC 9999 USAGE COMP-4.
03 COUNTER2 PIC 9999 USAGE COMP-4.
03 ADDLCMT PIC X(30).
03 VARINF2 REDEFINES VARINF1.
03 COUNTER1 PIC 9999 USAGE COMP-4.
03 COUNTER2 PIC 9999 USAGE COMP-4.
03 COUNTER3 PIC 9999 USAGE COMP-4.
03 COUNTER4 PIC 9999 USAGE COMP-4.
03 ADDLCMT2 PIC X(26).
DFHCNV TYPE=INITIAL
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=VSAM99
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=6,LAST=YES
*
* If offset 00 is a character 'X' use the following
* conversion definitions:
*
DFHCNV TYPE=SELECT,OPTION=COMPARE,OFFSET=00,DATA='X'
DFHCNV TYPE=FIELD,OFFSET=00,DATATYP=CHARACTER,DATALEN=80
DFHCNV TYPE=FIELD,OFFSET=80,DATATYP=BINARY,DATALEN=4
DFHCNV TYPE=FIELD,OFFSET=84,DATATYP=CHARACTER,DATALEN=30,LAST=YES
*
* Otherwise use the following (default)
* conversion definitions
*
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=00,DATATYP=CHARACTER,DATALEN=80
DFHCNV TYPE=FIELD,OFFSET=80,DATATYP=BINARY,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=88,DATATYP=CHARACTER,DATALEN=26,LAST=YES
DFHCNV TYPE=FINAL
Figure 22 shows user-defined conversion tables, EBTOAS and ASTOEB, illustrating how they are preceded with DFHCNV macros in the source that is submitted to the assembler.
*
LABL1 DFHCNV TYPE=INITIAL,CLINTCP=437,SRVERCP=037
*
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=VSAM80
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=BINARY,DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=2,DATATYP=CHARACTER,DATALEN=4, X
LAST=YES
LABLX DFHCNV TYPE=SELECT,OPTION=COMPARE,OFFSET=6,XDATA='C1C2C3'
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=BINARY,DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=2,DATATYP=CHARACTER,DATALEN=4
DFHCNV TYPE=FIELD,OFFSET=9,DATATYP=CHARACTER,DATALEN=8, X
LAST=YES
·
·
·
DFHCNV TYPE=ENTRY,RTYPE=TS,RNAME=ABCD
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=40
DFHCNV TYPE=FIELD,OFFSET=40,DATATYP=BINARY,DATALEN=4, X
LAST=YES
LABLN DFHCNV TYPE=FINAL
*
* EXAMPLE OF A USER-DEFINED CONVERSION TABLE EBCDIC to ASCII
EBTOAS DC XL16'000102030405060708090A0B0C0D0E0F'
DC XL16'101112131415161718191A1B1C1D1E1F'
DC XL16'202122232425262728292A2B2C2D2E2F'
DC XL16'303132333435363738393A3B3C3D3E3F'
DC XL16'404142434445464748494A4B4C4D4E4F'
DC XL16'505152535455565758595A5B5C5D5E5F'
DC XL16'606162636465666768696A6B6C6D6E6F'
DC XL16'707172737475767778797A7B7C7D7E7F'
DC XL16'80C1C2C3C4C5C6C7C8C98A8B8C8D8E8F'
DC XL16'90D1D2D3D4D5D6D7D8D99A9B9C9D9E9F'
DC XL16'A0A1E2E3E4E5E6E7E8E9AAABACADAEAF'
DC XL16'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
DC XL16'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'
DC XL16'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'
DC XL16'E0E1E2A3E4E5E6E7E8E9EAEBECEDEEEF'
DC XL16'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
*
* EXAMPLE OF A USER-DEFINED CONVERSION TABLE ASCII to EBCDIC
*
ASTOEB DC XL16'000102030405060708090A0B0C0D0E0F'
DC XL16'101112131415161718191A1B1C1D1E1F'
DC XL16'202122232425262728292A2B2C2D2E2F'
DC XL16'303132333435363738393A3B3C3D3E3F'
DC XL16'404142434445464748494A4B4C4D4E4F'
DC XL16'505152535455565758595A5B5C5D5E5F'
DC XL16'606162636465666768696A6B6C6D6E6F'
DC XL16'707172737475767778797A7B7C7D7E7F'
DC XL16'808182838485868788898A8B8C8D8E8F'
DC XL16'909192939495969798999A9B9C9D9E9F'
DC XL16'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'
DC XL16'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
DC XL16'C0818283848586878889CACBCCCDCECF'
DC XL16'D0919293949596979899DADBDCDDDEDF'
DC XL16'E0E1A2A3A4A5A6A7A8A9EAEBECEDEEEF'
DC XL16'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
END DFHCNVBA