Example macros

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.

Figure 17. Record layout for VSAM99
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.

Figure 18. Full description of VSAM99
    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

Figure 19. Condensed description of VSAM99
    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

Note:
Be careful when combining adjoining fields, even if they are of the same data type. Do not combine NUMERIC fields. Do not combine fields defined as CHARACTER, if SOSI=YES is specified for one or more of them. Whether you can combine USERDATA fields depends on user-defined data structures and conversion code.

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.

Figure 20. Redefined record layout for VSAM99
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).

Figure 21. Description for redefined record layout for VSAM99
   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.

Figure 22. SBCS user-defined conversion table
*
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

Related concepts
Where data conversion takes place
Function shipping and DPL
Distributed transaction processing
Transaction routing
Types of conversion
Character data
Binary data
The conversion process
User-defined conversion tables
The user-replaceable conversion program
Related tasks
Avoiding data conversion
Resource definition to enable data conversion
Defining the conversion table
Assembling and link-editing the conversion programs
Related reference
Where data conversion takes place
Character data
Defining the conversion table
The user-replaceable conversion program
[[ Contents Previous Page | Next Page Index ]]