Defining Storage and Constants:

To define empty storage:

  Format: label  DS  rSLn

    r   repetition factor
        - number of n length storage classes to repeat
        - optional decimal number
        - default: 1


    Ln  length
        - n is the number of bytes of the storage area
        - optional decimal number
        - L must be coded if n is going to be specified
        - default: depends on the storage class


    S   storage class
        - type of data that will be stored
        - two types

          F  - fullword data
             - numbers to do arithmetic with
             - default length: 4 bytes
             - data type: 32-bit twos complement integer
             - alignment: fullword boundary
                          absolute address divisible by 4

               NUM1  DS  F    ==>  1 fullword  ==> 4 bytes
               NUM2  DS  5F   ==>  5 fullwords  ==> 20 bytes
               NUM3  DS  FL3  ==>  3 bytes
               NUM4  DS  4FL2 ==>  8 bytes


          C  - Character data
             - default length: 1 byte
             - data type: EBCDIC characters (1 character/byte)
             - alignment: none

               TEXT1  DS  CL4   ==>  4 bytes
               TEXT2  DS  10CL6 ==>  60 bytes
               TEXT3  DS  10C   ==>  10 bytes

 

To define a constant:

  Format: label  DC  rSLn‘value’

    r   repetition factor
    S   storage class
    Ln  length

    value   constant (or initial) value
            - enclosed in single quotes

  In storage:

  NUM1   DC  F’27’        0000001B

  NUM2   DC  F’-1’        FFFFFFFF

  NUM3   DC  F’2,-1,18'   00000002FFFFFFFF00000012

  NUM4   DC  3F’1’        000000010000000100000001

  TEXT1  DC  C’HELLO’     C8C5D3D3D6

  TEXT2  DC  CL8’HELLO’   C8C5D3D3D6404040

  TEXT3  DC  CL3’HELLO’   C8C5D3

  TEXT4  DS  CL4’BYE’     F5F5F5F5  <- empty storage

NOTE: a ‘value’ may be specified on a DS statement, but it will be ignored