Last active
October 6, 2021 10:27
-
-
Save JohnArchieMckown/95822a4017fb025e3a98 to your computer and use it in GitHub Desktop.
REXX program to parse a LISTCAT and create IDCAMS control cards
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* REXX PROGRAM TO GENERATE IDCAMS DEFINE */ | |
| TRACE E | |
| DEFINED = "" | |
| RESTARTS = 0 | |
| CARD='/* RUN AT ' TIME('N') ' ON ' DATE('S') | |
| DO FOREVER; | |
| EXITCODE = @MAIN() | |
| IF EXITCODE = 0 THEN LEAVE | |
| RESTARTS = RESTARTS+1 | |
| IF RESTARTS > 3 THEN LEAVE | |
| SAY '************ RESTART ***********' | |
| ADDRESS ATTACH "IDCAMS" | |
| IF RC <> 0 THEN LEAVE | |
| END; | |
| EXIT EXITCODE | |
| @MAIN:PROCEDURE | |
| TYPE.1 = 'CLUSTER' | |
| TYPE.2 = 'PATH' | |
| TYPE.3 = 'AIX' | |
| BLANKS = COPIES(' ',80) | |
| DEFCL.= '' | |
| REF.0 = 0 | |
| DEF.='*NO*' | |
| OFFSET6 = '$' | |
| DO FOREVER | |
| "EXECIO 1 DISKR IDCAMS" | |
| IF RC <> 0 THEN LEAVE | |
| PARSE PULL RECORD | |
| TEST = LEFT(RECORD,7) | |
| IF TEST = '1IDCAMS' THEN ITERATE; | |
| RECORD=SUBSTR(RECORD,2); /* STRIP OUT THE CARRIAGE */ | |
| OFFSET = VERIFY(RECORD,' '); /* FIND LOCATION OF 1ST NON-BLANK */ | |
| IF OFFSET = 0 THEN ITERATE; /* IGNORE BLANK LINE */ | |
| CALL @NODASH; | |
| TOCALL = 'CALL @OFFSET'OFFSET | |
| CALL @DOCALL | |
| END; | |
| CALL @DUMPIT | |
| "EXECIO 0 DISKR IDCAMS (FINIS" | |
| "EXECIO 0 DISKW DEFINES (FINIS" | |
| EXITCODE = 0 | |
| DO I = 1 TO REF.0 | |
| A = REF.I | |
| IF DEF.A = '*YES*' THEN ITERATE | |
| CARD = " LISTC ENT('"A"') OUTFILE(IDCAMSO) ALL" | |
| PUSH CARD | |
| "EXECIO 1 DISKW SYSIN" | |
| SAY 'NOT FOUND "'A'"' | |
| EXITCODE=8 | |
| END | |
| IF EXITCODE <> 0 THEN "EXECIO 0 DISKW SYSIN(FINIS" | |
| RETURN EXITCODE; | |
| @DOCALL: | |
| SIGNAL ON SYNTAX | |
| INTERPRET TOCALL | |
| SIGNAL OFF SYNTAX | |
| RETURN; | |
| @OFFSET1: | |
| @OFFSET4: | |
| SIGNAL OFF SYNTAX | |
| PARSE VAR RECORD VARNAME VARDATA | |
| VARNAME = LEFT(VARNAME,LENGTH(VARNAME)-1) | |
| TOCALL = 'CALL @'VARNAME | |
| SIGNAL @DOCALL | |
| RETURN; | |
| @CLUSTER: | |
| @AIX: | |
| @PATH: | |
| SIGNAL OFF SYNTAX | |
| CALL @DUMPIT; | |
| DROP DEFCL. | |
| DEFCL.='' | |
| DEFCL.$TYPE = VARNAME | |
| DEFCL.VARNAME = VARDATA | |
| COMP = $COMP | |
| OFFSET6 = '$' | |
| RETURN; | |
| @DATA: | |
| @INDEX: | |
| SIGNAL OFF SYNTAX | |
| COMP = SPACE(VARNAME,0); | |
| DEFCL.COMP = SPACE(VARDATA,0); | |
| RETURN; | |
| @OFFSET6: | |
| SIGNAL OFF SYNTAX | |
| PARSE VAR RECORD FUNCTION REST | |
| OFFSET6 = SPACE(FUNCTION,0) | |
| RETURN; | |
| @OFFSET8: | |
| SIGNAL OFF SYNTAX | |
| DO WHILE LENGTH(RECORD) > 0 | |
| PARSE VAR RECORD VARNAME RECORD | |
| VARNAME = SPACE(VARNAME,0) | |
| IF RIGHT(VARNAME,1) = '^' | |
| THEN DO; | |
| PARSE VAR RECORD VALUE RECORD | |
| VALUE = SPACE(VALUE,0) | |
| VARNAME = LEFT(VARNAME,LENGTH(VARNAME)-1) | |
| C = DEFCL.COMP.VARNAME VALUE | |
| DEFCL.COMP.VARNAME = STRIP(C) | |
| END; | |
| ELSE DEFCL.COMP.$KEYWORD = DEFCL.COMP.$KEYWORD VARNAME' ' | |
| END; | |
| RETURN; | |
| @NODASH: | |
| SIGNAL OFF SYNTAX | |
| TRECORD = RECORD | |
| TEMP1 = '' | |
| FDASH = POS('--',TRECORD) | |
| DO WHILE FDASH <> 0 | |
| TEMP1 = TEMP1 LEFT(TRECORD,FDASH-1) | |
| TEMP1 = STRIP(TEMP1,'T')'^ ' | |
| TRECORD = SUBSTR(TRECORD,FDASH) | |
| FDASH = VERIFY(TRECORD,'-'); /* FIND NON-DASH */ | |
| IF FDASH =0 THEN ITERATE; | |
| TRECORD = SUBSTR(TRECORD,FDASH) | |
| FDASH = POS('--',TRECORD) | |
| END; | |
| TEMP1 = TEMP1 TRECORD | |
| RECORD = SPACE(TEMP1,1) | |
| RETURN; | |
| @DUMP: | |
| SIGNAL OFF SYNTAX | |
| ARG NAME | |
| VALUE = VALUE(NAME) | |
| RETURN; | |
| @DUMPIT: | |
| SIGNAL OFF SYNTAX | |
| CARD = ' ' | |
| CALL @OUTCARD | |
| A=DEFCL.$TYPE | |
| A=DEFCL.A | |
| DEF.A = '*YES*' | |
| DO I=1 TO 3 | |
| A = TYPE.I | |
| B = STRIP(DEFCL.$COMP.A) | |
| DO WHILE LENGTH(B) > 0 | |
| PARSE VAR B DATA B | |
| B=STRIP(B) | |
| I = REF.0+1 | |
| REF.0 = I | |
| REF.I = DATA | |
| END | |
| END | |
| TOCALL = 'CALL @1'DEFCL.$TYPE | |
| SIGNAL @DOCALL | |
| RETURN; | |
| @1PATH: | |
| SIGNAL OFF SYNTAX | |
| PATH = 'PATH' | |
| CARD = 'DEL 'DEFCL.PATH' PATH' | |
| CALL @OUTCARD | |
| CARD = 'DEF PATH(-' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.PATH') -' | |
| CALL @OUTCARD | |
| AIX='AIX' | |
| CARD = LEFT(BLANKS,6)'PATHENTRY('DEFCL.$COMP.AIX') -' | |
| CALL @OUTCARD | |
| IF POS(' NOUPDATE ',DEFCL.$COMP.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'NOUPDATE -' | |
| CALL @OUTCARD | |
| END | |
| ELSE CARD = LEFT(BLANKS,4)')' | |
| CALL @OUTCARD | |
| RETURN; | |
| @1CLUSTER: | |
| SIGNAL OFF SYNTAX | |
| IF DEFCL.DATA.VOLSER <> " " THEN , | |
| DEFCL.DATA.VOLSER=WORD(DEFCL.DATA.VOLSER,1) ||, | |
| COPIES(' *',WORDS(DEFCL.DATA.VOLSER)-1) | |
| IF DEFCL.INDEX.VOLSER <> " " THEN , | |
| DEFCL.INDEX.VOLSER=WORD(DEFCL.INDEX.VOLSER,1) ||, | |
| COPIES(' *',WORDS(DEFCL.INDEX.VOLSER)-1) | |
| CLUSTER = 'CLUSTER' | |
| DATA = 'DATA' | |
| INDEX = 'INDEX' | |
| BUFSPACE='BUFSPACE' | |
| VOLSER='VOLSER' | |
| STORAGECLASS='STORAGECLASS' | |
| MANAGEMENTCLASS='MANAGEMENTCLASS' | |
| DATACLASS='DATACLASS' | |
| DEFCL.DATA.$KEYWORD = DEFCL.DATA.$KEYWORD' ' | |
| DEFCL.INDEX.$KEYWORD = DEFCL.INDEX.$KEYWORD' ' | |
| CARD = 'DEL 'DEFCL.CLUSTER' CLUSTER' | |
| CALL @OUTCARD | |
| CARD = 'DEF CLUSTER( -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.CLUSTER') -' | |
| CALL @OUTCARD | |
| IF DEFCL.$COMP.STORAGECLASS <> '' THEN DO | |
| CARD = LEFT(BLANKS,6)'STORAGECLASS('DEFCL.$COMP.STORAGECLASS') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.$COMP.MANAGEMENTCLASS <> '' THEN DO | |
| CARD = LEFT(BLANKS,6)'MANAGEMENTCLASS(' ||, | |
| DEFCL.$COMP.MANAGEMENTCLASS') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.$COMP.DATACLASS <> '' THEN DO | |
| CARD = LEFT(BLANKS,6)'DATACLASS('DEFCL.$COMP.DATACLASS') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.$COMP.LOG <> '(NULL)' THEN DO | |
| CARD = LEFT(BLANKS,6)'LOG('DEFCL.$COMP.LOG') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.$COMP.LOGSTREAMID <> '(NULL)' THEN DO | |
| CARD = LEFT(BLANKS,6)'LOGSTREAMID('DEFCL.$COMP.LOGSTREAMID') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.$COMP.FRLOG <> '(NULL)' THEN DO | |
| CARD = LEFT(BLANKS,6)'FRLOG('DEFCL.$COMP.FRLOG') -' | |
| CALL @OUTCARD | |
| END | |
| IF DEFCL.DATA.VOLSER = DEFCL.INDEX.VOLSER | |
| IF DEFCL.DATA.VOLSER = DEFCL.INDEX.VOLSER | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.DATA.VOLSER') -' | |
| CALL @OUTCARD | |
| DEFCL.DATA.VOLSER = '' | |
| DEFCL.INDEX.VOLSER = '' | |
| END; | |
| CARD = LEFT(BLANKS,6)'BUFFERSPACE('DEFCL.DATA.BUFSPACE') -' | |
| CALL @OUTCARD | |
| TEMP1 ='FREESPACE-%CI' | |
| TEMP2 ='FREESPACE-%CA' | |
| TEMP1 = SPACE(DEFCL.DATA.TEMP1,0) | |
| TEMP2 = SPACE(DEFCL.DATA.TEMP2,0) | |
| IF TEMP1 <> 0 | TEMP2 <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'FREESPACE('TEMP1 TEMP2') -' | |
| CALL @OUTCARD; | |
| END; | |
| RKP = 'RKP' | |
| KEYLEN = 'KEYLEN' | |
| IF KEYLEN <> 0 | |
| THEN DO; | |
| A = SPACE(DEFCL.DATA.KEYLEN,0) | |
| B = SPACE(DEFCL.DATA.RKP,0) | |
| CARD = LEFT(BLANKS,6)'KEYS('A B') -' | |
| CALL @OUTCARD; | |
| END; | |
| MAXLRECL = 'MAXLRECL' | |
| AVGLRECL = 'AVGLRECL' | |
| A = SPACE(DEFCL.DATA.AVGLRECL,0) | |
| B = SPACE(DEFCL.DATA.MAXLRECL,0) | |
| CARD = LEFT(BLANKS,6)'RECORDSIZE('A B') -' | |
| CALL @OUTCARD | |
| PARSE VAR DEFCL.DATA.$KEYWORD . 'SHROPTNS(' SHRX ')' . | |
| CARD = LEFT(BLANKS,6)'SHAREOPTIONS('SHRX') -' | |
| CALL @OUTCARD | |
| IF POS(' REPLICATE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'/*REPLICATE */ -' | |
| CALL @OUTCARD; | |
| END; | |
| IF POS(' IMBED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'/*IMBED*/ -' | |
| CALL @OUTCARD; | |
| END; | |
| IF POS(' NONINDEXED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'NONINDEXED -' | |
| CALL @OUTCARD; | |
| END; | |
| IF POS(' NUMBERED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'NUMBERED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' ORDERED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'ORDERED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' REUSE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'REUSE -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' SPANNED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'SPANNED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' SPEED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'SPEED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' WRITECHK ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'WRITECHECK -' | |
| CALL @OUTCARD | |
| END | |
| CARD = LEFT(BLANKS,4)') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)'DATA( -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.DATA') -' | |
| CALL @OUTCARD | |
| IF DEFCL.DATA.VOLSER <> '' | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.DATA.VOLSER') -' | |
| CALL @OUTCARD | |
| END; | |
| CISIZE='CISIZE' | |
| CARD = LEFT(BLANKS,6)'CONTROLINTERVALSIZE('DEFCL.DATA.CISIZE') -' | |
| CALL @OUTCARD | |
| SPRI='SPACE-PRI' | |
| SSEC='SPACE-SEC' | |
| STYPE='SPACE-TYPE' | |
| A = SPACE(DEFCL.DATA.SPRI,0) | |
| B = SPACE(DEFCL.DATA.SSEC,0) | |
| C = SPACE(DEFCL.DATA.STYPE,0) | |
| CARD = LEFT(BLANKS,6) || C'('A B') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)')' | |
| IF POS(' INDEXED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN CARD = CARD'-' | |
| ELSE DO; | |
| CALL @OUTCARD | |
| RETURN; | |
| END; | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)'INDEX( -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.INDEX')-' | |
| CALL @OUTCARD | |
| IF DEFCL.INDEX.VOLSER <> '' | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.INDEX.VOLSER') -' | |
| CALL @OUTCARD | |
| END; | |
| CISIZE='CISIZE' | |
| CARD = LEFT(BLANKS,6)'CONTROLINTERVALSIZE('DEFCL.INDEX.CISIZE') -' | |
| CALL @OUTCARD | |
| SPRI='SPACE-PRI' | |
| SSEC='SPACE-SEC' | |
| STYPE='SPACE-TYPE' | |
| A = SPACE(DEFCL.INDEX.SPRI,0) | |
| B = SPACE(DEFCL.INDEX.SSEC,0) | |
| C = SPACE(DEFCL.INDEX.STYPE,0) | |
| CARD = LEFT(BLANKS,6) || C'('A B') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)')' | |
| CALL @OUTCARD | |
| RETURN; | |
| @1AIX: | |
| SIGNAL OFF SYNTAX | |
| IF DEFCL.DATA.VOLSER <> " " THEN , | |
| DEFCL.DATA.VOLSER=WORD(DEFCL.DATA.VOLSER,1) ||, | |
| COPIES(' *',WORDS(DEFCL.DATA.VOLSER)-1) | |
| IF DEFCL.INDEX.VOLSER <> " " THEN , | |
| DEFCL.INDEX.VOLSER=WORD(DEFCL.INDEX.VOLSER,1) ||, | |
| COPIES(' *',WORDS(DEFCL.INDEX.VOLSER)-1) | |
| CLUSTER = 'CLUSTER' | |
| AIX = 'AIX' | |
| DATA = 'DATA' | |
| INDEX = 'INDEX' | |
| BUFSPACE='BUFSPACE' | |
| VOLSER='VOLSER' | |
| DEFCL.DATA.$KEYWORD = DEFCL.DATA.$KEYWORD' ' | |
| DEFCL.INDEX.$KEYWORD = DEFCL.INDEX.$KEYWORD' ' | |
| CARD = 'DEL 'DEFCL.AIX' AIX' | |
| CALL @OUTCARD | |
| CARD = 'DEF ALTERNATEINDEX (-' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.AIX') -' | |
| CALL @OUTCARD | |
| SIGNAL ON NOVALUE | |
| CARD = LEFT(BLANKS,6)'RELATE('DEFCL.$COMP.CLUSTER') -' | |
| SIGNAL OFF NOVALUE | |
| CALL @OUTCARD | |
| IF DEFCL.DATA.VOLSER = DEFCL.INDEX.VOLSER | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.DATA.VOLSER') -' | |
| CALL @OUTCARD | |
| DEFCL.DATA.VOLSER = '' | |
| DEFCL.INDEX.VOLSER = '' | |
| END; | |
| CARD = LEFT(BLANKS,6)'BUFFERSPACE('DEFCL.DATA.BUFSPACE') -' | |
| CALL @OUTCARD | |
| TEMP1 ='FREESPACE-%CI' | |
| TEMP2 ='FREESPACE-%CA' | |
| TEMP1 = DEFCL.DATA.TEMP1; TEMP2 = DEFCL.DATA.TEMP2 | |
| IF TEMP1 <> 0 | TEMP2 <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'FREESPACE('TEMP1 TEMP2') -' | |
| CALL @OUTCARD; | |
| END; | |
| AXRKP = 'AXRKP' | |
| KEYLEN = 'KEYLEN' | |
| IF KEYLEN <> 0 | |
| THEN DO; | |
| A = SPACE(DEFCL.DATA.KEYLEN,0) | |
| B = SPACE(DEFCL.DATA.AXRKP,0) | |
| CARD = LEFT(BLANKS,6)'KEYS('A B') -' | |
| CALL @OUTCARD; | |
| END; | |
| MAXLRECL = 'MAXLRECL' | |
| AVGLRECL = 'AVGLRECL' | |
| A = SPACE(DEFCL.DATA.AVGLRECL,0) | |
| B = SPACE(DEFCL.DATA.MAXLRECL,0) | |
| CARD = LEFT(BLANKS,6)'RECORDSIZE('A B') -' | |
| CALL @OUTCARD | |
| IF POS(' ERASE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'ERASE -' | |
| CALL @OUTCARD; | |
| END; | |
| IF POS(' IMBED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'/*IMBED*/ -' | |
| CALL @OUTCARD; | |
| END; | |
| IF POS(' ORDERED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'ORDERED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' REPLICATE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'/*REPLICATE*/ -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' REUSE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'REUSE -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' SPEED ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'SPEED -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' UNIQUEKEY ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'UNIQUEKEY -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' NOUPGRADE ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'NOUPGRADE -' | |
| CALL @OUTCARD | |
| END | |
| IF POS(' WRITECHK ',DEFCL.DATA.$KEYWORD) <> 0 | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'WRITECHECK -' | |
| CALL @OUTCARD | |
| END | |
| CARD = LEFT(BLANKS,4)') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)'DATA( -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.DATA') -' | |
| CALL @OUTCARD | |
| IF DEFCL.DATA.VOLSER <> '' | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.DATA.VOLSER') -' | |
| CALL @OUTCARD | |
| END; | |
| CISIZE='CISIZE' | |
| CARD = LEFT(BLANKS,6)'CONTROLINTERVALSIZE('DEFCL.DATA.CISIZE') -' | |
| CALL @OUTCARD | |
| SPRI='SPACE-PRI' | |
| SSEC='SPACE-SEC' | |
| STYPE='SPACE-TYPE' | |
| A = SPACE(DEFCL.DATA.SPRI,0) | |
| B = SPACE(DEFCL.DATA.SSEC,0) | |
| C = SPACE(DEFCL.DATA.STYPE,0) | |
| CARD = LEFT(BLANKS,6) || C'('A B') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)'INDEX( -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,6)'NAME('DEFCL.INDEX')-' | |
| CALL @OUTCARD | |
| IF DEFCL.INDEX.VOLSER <> '' | |
| THEN DO; | |
| CARD = LEFT(BLANKS,6)'VOLUMES('DEFCL.INDEX.VOLSER') -' | |
| CALL @OUTCARD | |
| END; | |
| CISIZE='CISIZE' | |
| CARD = LEFT(BLANKS,6)'CONTROLINTERVALSIZE('DEFCL.INDEX.CISIZE') -' | |
| CALL @OUTCARD | |
| SPRI='SPACE-PRI' | |
| SSEC='SPACE-SEC' | |
| STYPE='SPACE-TYPE' | |
| A = SPACE(DEFCL.INDEX.SPRI,0) | |
| B = SPACE(DEFCL.INDEX.SSEC,0) | |
| C = SPACE(DEFCL.INDEX.STYPE,0) | |
| CARD = LEFT(BLANKS,6) || C'('A B') -' | |
| CALL @OUTCARD | |
| CARD = LEFT(BLANKS,4)')' | |
| CALL @OUTCARD | |
| RETURN; | |
| @OUTCARD: | |
| SIGNAL OFF SYNTAX | |
| DO WHILE LENGTH(CARD) > 72 | |
| BREAKAT=LASTPOS(' ',CARD,70) | |
| IF 0 = BREAKAT THEN EXIT 20 | |
| QUEUE STRIP(LEFT(CARD,BREAKAT),'T')||" -" | |
| CARD=" " || STRIP(SUBSTR(CARD,BREAKAT),'L') | |
| END | |
| QUEUE CARD | |
| QUEUE '' | |
| "EXECIO * DISKW DEFINES" | |
| RETURN; | |
| NOVALUE: | |
| SAY SIGL | |
| SAY SOURCELINE(SIGL) | |
| SAY ERRORTEXT(RC) | |
| EXIT | |
| SYNTAX: | |
| RETURN; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
John, I just downloaded this REXX script and trying to run it.... Question is, where do I supply the input VSAM dataset name for the IDCAMS, or is this to be run in BATCH?
Thank you!