/****************************************************************/ /* */ /* NAME: R2COB6 */ /* TITLE: PROGRAM 'R2COB6', 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' */ /* */ /****************************************************************/ /* THE CHARCODE OPTION IS SET SO THAT THE STRINGS, '?/?/', */ /* '?(', AND '?)' ARE PROPERLY INTERPRETED. */ OPTIONS CHARCODE; /* */ /* SAVE THE DATA DICTIONARY IN A PERMANENT SAS DATA SET. */ /* NOTE: THIS IS DONE ONLY WHEN &LIBREF RESOLVES TO */ /* A VALUE OTHER THAN A BLANK. */ /* */ /* PRODUCE SAS LANGUAGE INPUT STATEMENTS. */ /* */ DATA &LIBREF.DICTNRY (KEEP=FILENAME LEVEL NST_DPTH DATANAME NEWNAME USAGE PICTURE INFMT OCR_BASE ITM_DISP ATBYTE BYTES OCR_VAL RDF_NAME); /* */ /* THE CHARCODE OPTION IS SET SO THAT THE STRINGS, '?/?/', */ /* '?(', AND '?)' ARE PROPERLY INTERPRETED. */ /* */ /* FILLER COUNT AND FILLER STRING */ RETAIN FLLR_CNT 0; LENGTH FLLR_STR $4; IF _N_ = 1 THEN SET SWITCHES; RETAIN FIRSTIME 1; SET DICTNRY END=EOF; &FILE; IF (LEVEL = '01') OR (_N_ = 1) THEN DO; /* BEGIN A NEW SAS INPUT STATEMENT. */ IF FIRSTIME THEN DO; FIRSTIME = 0; PUT; PUT; END; /* FIRST TIME */ ELSE DO; /* NOT FIRST TIME */ PUT @6 ';'; PUT; END; /* NOT FIRST TIME */ PUT @3 '/* INFILE ' FILENAME ' */'; PUT @3 'INPUT'; END; /* AT LEVEL 01 */ ELSE DO; /* NOT AT LEVEL 01 */ /* STILL BUILDING THE CURRENT SAS INPUT STATEMENT. */ END; /* NOT AT LEVEL 01 */ /* IGNORE ENTRIES WITH USAGE EQUAL TO GROUP. */ IF (USAGE = 'GROUP') THEN DO; IF EOF THEN PUT @6 ';'; RETURN; END; /* IF (USAGE = 'GROUP') */ /* IF DEL_FLLR = 'Y', THEN IGNORE ENTRIES WITH 'FILLER'. */ /* OTHERWISE, MAKE THE NEWNAME UNIQUE. */ IF (DEL_FLLR = 'Y') AND (DATANAME = 'FILLER') THEN DO; IF EOF THEN PUT @6 ';'; RETURN; END; /* IF (DEL_FLLR = 'Y') ETC. */ ELSE IF (DEL_FLLR NE 'Y') AND (DATANAME = 'FILLER') THEN DO; FLLR_CNT + 1; FLLR_STR = PUT(FLLR_CNT,4.); NEWNAME = 'FLLR'?/?/TRIM(LEFT(FLLR_STR)); END; /* ELSE IF (DEL_FLLR NE 'Y') ETC. */ IF USE_AT = 'Y' THEN PUT @6 '@' @7 ATBYTE @18 NEWNAME @28 INFMT; ELSE PUT @6 NEWNAME @18 INFMT; IF EOF THEN PUT @6 ';'; RUN; /* DATA &LIBREF.DICTNRY */ /* THE NOCHARCODE OPTION IS SET SO THAT STRINGS LIKE, '?)', ARE */ /* NOT MISINTERPRETED. */ OPTIONS NOCHARCODE; RUN; /* PROGRAM R2COB6 */