/****************************************************************/
 /*                                                              */
 /*    NAME: R2COB1                                              */
 /*   TITLE: PROGRAM 'R2COB1', A PART OF 'COB2SAS, RELEASE 2'    */
 /* PRODUCT: SAS                                                 */
 /*  SYSTEM: CMS MVS VSE VMS                                     */
 /*    DATA: COB2SAS, RELEASE 2                                  */
 /*                                                              */
 /*  AUTHOR: TOM ZACK                                            */
 /* SUPPORT: TOM ZACK                    UPDATE: 22JUL90         */
 /*     REF: COB2SAS, RELEASE 2 DOCUMENTATION                    */
 /*    MISC: WHEN USING, INVOKE SAS WITH THE SYSTEM OPTIONS:     */
 /*                      'DQUOTE MACRO'                          */
 /*                                                              */
 /****************************************************************/

 PROC FORMAT;
 /* DATA DESCRIPTION TOKEN FORMAT.                               */
 /*                                                              */
 /* THIS IS A LIST OF TOKENS RECOGNIZED WHILE BUILDING CLAUSES.  */
 /*                                                              */
 VALUE $DDTFMT
    '01' = '1.'
    '02' - '49' = '2.'
    OTHER = '3.'
    'FILLER' = '4.'
    'REDEFINES' = '5.'
    'IS' = '6.'
    'EXTERNAL' = '7.'
    'GLOBAL' = '8.'
    'PICTURE','PIC' = '9.'
    'USAGE' = '10.'
    'BINARY',
    'COMPUTATIONAL','COMP',
    'COMPUTATIONAL-1','COMP-1',
    'COMPUTATIONAL-2','COMP-2',
    'COMPUTATIONAL-3','COMP-3',
    'COMPUTATIONAL-4','COMP-4',
    'DISPLAY','INDEX',
    'PACKED-DECIMAL' = '11.'
    'SIGN' = '12.'
    'LEADING','TRAILING' = '13.'
    'SEPARATE' = '14.'
    'CHARACTER' = '15.'
    'SYNCHRONIZED','SYNC' = '16.'
    'JUSTIFIED','JUST' = '17.'
    'LEFT' = '18.'
    'RIGHT' = '19.'
    'BLANK' = '20.'
    'WHEN'  = '21.'
    'ZERO' = '22.'
    'VALUE' = '23.';

 PROC FORMAT;
 /* DATA DESCRIPTION IDENTIFY CLAUSE FORMAT.                     */
 /*                                                              */
 /*    THIS IS A LIST OF ALL THE TOKENS THAT ARE RECOGNIZED      */
 /* WHEN THE PRS_MODE EQUALS IDN_CLS.                            */
 /*    THIS FORMAT IS USED TO IDENTIFY THE NEXT CLAUSE BY        */
 /* IDENTIFYING THE FIRST TOKEN IN THAT CLAUSE.                  */
 /*                                                              */
 VALUE $DDICFMT
    '01' - '49' = 'LEVEL NUMBER'

    'REDEFINES',
    'EXTERNAL','GLOBAL',
    'USAGE',
    'BINARY',
    'COMPUTATIONAL','COMP',
    'COMPUTATIONAL-1','COMP-1',
    'COMPUTATIONAL-2','COMP-2',
    'COMPUTATIONAL-3','COMP-3',
    'COMPUTATIONAL-4','COMP-4',
    'DISPLAY','INDEX',
    'PACKED-DECIMAL',
    'SIGN',
    'LEADING','TRAILING',
    'SYNCHRONIZED','SYNC',
    'JUSTIFIED','JUST',
    'BLANK' = 'IDENTIFIED'

    'PICTURE','PIC' = 'PICTURE'
    'OCCURS' = 'OCCURS'
    '66' = '66'
    '88' = '88'
    'COPY' = 'COPY'
    'VALUE' = 'VALUE'
    OTHER = 'UNIDENTIFIED';

 PROC FORMAT;
 /* DATA DESCRIPTION CLAUSE FORMAT.                              */
 /*                                                              */
 /* 01 DATANAME:                                                 */
 /* 01 FILLER:                                                   */
 /* '1.3.','1.4.' = '1'                                          */
 /*                                                              */
 /* LEVEL-NUMBER DATANAME:                                       */
 /* LEVEL-NUMBER FILLER:                                         */
 /* '2.3.','2.4.' = '2'                                          */
 /*                                                              */
 /* REDEFINES DATANAME:                                          */
 /* REDEFINES FILLER:                                            */
 /* '5.3.','5.4.' = '3'                                          */
 /*                                                              */
 /* EXTERNAL                                                     */
 /* IS EXTERNAL                                                  */
 /* '7.','6.7.' = '4'                                            */
 /*                                                              */
 /* GLOBAL                                                       */
 /* IS GLOBAL                                                    */
 /* '8.','6.8.' = '5'                                            */
 /*                                                              */
 /* USAGE-VALUE:                                                 */
 /* USAGE USAGE-VALUE:                                           */
 /* USAGE IS USAGE-VALUE:                                        */
 /* '11.','10.11.','10.6.11.' = '7'                              */
 /*                                                              */
 /* SIGN-VALUE (LEADING OR TRAILING):                            */
 /* SIGN SIGN-VALUE:                                             */
 /* SIGN IS SIGN-VALUE:                                          */
 /* SIGN-VALUE SEPARATE:                                         */
 /* SIGN-VALUE SEPARATE CHARACTER:                               */
 /* SIGN SIGN-VALUE SEPARATE:                                    */
 /* SIGN IS SIGN-VALUE SEPARATE:                                 */
 /* SIGN SIGN-VALUE SEPARATE CHARACTER:                          */
 /* SIGN IS SIGN-VALUE SEPARATE CHARACTER:                       */
 /* '13.','12.13.','12.6.13.',                                   */
 /* '13.14.','13.14.15.',                                        */
 /* '12.13.14.','12.6.13.14.',                                   */
 /* '12.13.14.15.','12.6.13.14.15.' = '8'                        */
 /*                                                              */
 /* SYNCHRONIZED:                                                */
 /* SYNCHRONIZED LEFT:                                           */
 /* SYNCHRONIZED RIGHT:                                          */
 /* '16.','16.18.','16.19.' = '9'                                */
 /*                                                              */
 /* JUSTIFIED:                                                   */
 /* JUSTIFIED RIGHT:                                             */
 /* '17.','17.19.' = '10'                                        */
 /*                                                              */
 /* BLANK ZERO:                                                  */
 /* BLANK WHEN ZERO:                                             */
 /* '20.22.','20.21.22.' = '11'                                  */
 /*                                                              */

 VALUE $DDCFMT
    '1.3.','1.4.' = '1'
    '2.3.','2.4.' = '2'
    '5.3.','5.4.' = '3'
    '7.','6.7.' = '4'
    '8.','6.8.' = '5'
    '11.','10.11.','10.6.11.' = '7'
    '13.','12.13.','12.6.13.',
    '13.14.','13.14.15.',
    '12.13.14.','12.6.13.14.',
    '12.13.14.15.','12.6.13.14.15.' = '8'
    '16.','16.18.','16.19.' = '9'
    '17.','17.19.' = '10'
    '20.22.','20.21.22.' = '11'
    OTHER = 'UNDEFINED';

 PROC FORMAT;
    VALUE DDSHOFMT
    1 = '01 CLAUSE'
    2 = '02-49 CLAUSE'
    3 = 'REDEFINES CLAUSE'
    4 = 'EXTERNAL CLAUSE'
    5 = 'GLOBAL CLAUSE'
    6 = 'PICTURE CLAUSE'
    7 = 'USAGE CLAUSE'
    8 = 'SIGN CLAUSE'
    9 = 'SYNCHRONIZED CLAUSE'
    10 = 'JUSTIFIED CLAUSE'
    11 = 'B.W.Z. CLAUSE'
    12 = 'VALUE CLAUSE'
    13 = 'OCCURS CLAUSE'
    14 = '66 CLAUSE'
    15 = '88 CLAUSE'
    16 = 'COPY CLAUSE'
    OTHER = 'UNRECOGNIZED CLAUSE';

 PROC FORMAT;
 /* ATTRIBUTE VECTOR FORMAT.                                     */
 /*                                                              */
 /* 01 CLAUSE                                                    */
 /* 2 = '1.'                                                     */
 /*                                                              */
 /* 02-49 CLAUSE                                                 */
 /* 4 = '2.'                                                     */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE                                */
 /* 12 = '2.3.'                                                  */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE PICTURE CLAUSE                 */
 /* 76 = '2.3.6.'                                                */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE USAGE CLAUSE                   */
 /* 140 = '2.3.7.'                                               */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE PICTURE CLAUSE USAGE CLAUSE    */
 /* 204 = '2.3.6.7.'                                             */
 /*                                                              */
 /* 01 CLAUSE PICTURE CLAUSE                                     */
 /* 66 = '1.6.'                                                  */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE                                  */
 /* 68 = '2.6.'                                                  */
 /*                                                              */
 /* 01 CLAUSE USAGE CLAUSE                                       */
 /* 130 = '1.7.'                                                 */
 /*                                                              */
 /* 02-49 CLAUSE USAGE CLAUSE                                    */
 /* 132 = '2.7.'                                                 */
 /*                                                              */
 /* 01 CLAUSE PICTURE CLAUSE USAGE CLAUSE                        */
 /* 194 = '1.6.7.'                                               */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE USAGE CLAUSE                     */
 /* 196 = '2.6.7.'                                               */
 /*                                                              */
 /* 01 CLAUSE PICTURE CLAUSE B.W.Z. CLAUSE                       */
 /* 2114 = '1.6.11.'                                             */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE B.W.Z. CLAUSE                    */
 /* 2116 = '2.6.11.'                                             */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE PICTURE CLAUSE B.W.Z. CLAUSE   */
 /* 2124 = '2.3.6.11.'                                           */
 /*                                                              */
 /* 01 CLAUSE PICTURE CLAUSE USAGE CLAUSE B.W.Z.CLAUSE           */
 /* 2242 = '1.6.7.11.'                                           */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE USAGE CLAUSE B.W.Z. CLAUSE       */
 /* 2244 = '2.6.7.11.'                                           */
 /*                                                              */
 /* 02-49 CLAUSE REDEFINES CLAUSE PICTURE CLAUSE USAGE CLAUSE    */
 /*              B.W.Z. CLAUSE                                   */
 /* 2252 = '2.3.6.7.11.'                                         */
 /*                                                              */
 /* 02-49 CLAUSE OCCURS CLAUSE                                   */
 /* 8196 = '2.13.'                                               */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE OCCURS CLAUSE                    */
 /* 8260 = '2.6.13.'                                             */
 /*                                                              */
 /* 02-49 CLAUSE USAGE CLAUSE OCCURS CLAUSE                      */
 /* 8324 = '2.7.13.'                                             */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE USAGE CLAUSE OCCURS CLAUSE       */
 /* 8388 = '2.6.7.13.'                                           */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE B.W.Z. CLAUSE OCCURS CLAUSE      */
 /* 10308 = '2.6.11.13.'                                         */
 /*                                                              */
 /* 02-49 CLAUSE PICTURE CLAUSE USAGE CLAUSE B.W.Z. CLAUSE       */
 /*              OCCURS CLAUSE                                   */
 /* 10436 = '2.6.7.11.13.'                                       */
 /*                                                              */
 /* 66 CLAUSE                                                    */
 /* 16384 = '14.'                                                */
 /*                                                              */
 /* 88 CLAUSE                                                    */
 /* 32768 = '15.'                                                */
 /*                                                              */

 VALUE DDAVFMT
    2 = '1.'
    4 = '2.'
    12 = '2.3.'
    66 = '1.6.'
    68 = '2.6.'
    76 = '2.3.6.'
    140 = '2.3.7.'
    130 = '1.7.'
    132 = '2.7.'
    194 = '1.6.7.'
    196 = '2.6.7.'
    204 = '2.3.6.7.'
    2114 = '1.6.11.'
    2116 = '2.6.11.'
    2124 = '2.3.6.11.'
    2242 = '1.6.7.11.'
    2244 = '2.6.7.11.'
    2252 = '2.3.6.7.11.'
    8196 = '2.13.'
    8260 = '2.6.13.'
    8324 = '2.7.13.'
    8388 = '2.6.7.13.'
    10308 = '2.6.11.13.'
    10436 = '2.6.7.11.13.'
    16384 = '14.'
    32768 = '15.'
    OTHER = 'UNRECOGNIZED';

 RUN;  /* PROGRAM R2COB1 */