Skip to content

Commit

Permalink
SAMPLE LIB synchronised with GIT.
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter-Jacob committed Apr 24, 2024
1 parent f8046be commit dc8e002
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 137 deletions.
5 changes: 5 additions & 0 deletions samples/BUILD.REXX
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-- This member is responsible for monitoring all synchronisations
-- of the MVS system and GIT to ensure that any changes developed
-- and tested on the MVS system are reflected accurately.

SAMPLE LIB has been updated to GIT on 24. April 2024 at 12:20
1 change: 1 addition & 0 deletions samples/LOCATE.REXX
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* REXX *//* SCRIPT TO GENERATE THE DATA FILE OF ALL *//* DATASETS, AND ANY MEMBERS CONTAINED IN THEM *//*---------------------------------------------*//* SCOTT JOHNSON - [email protected] *//*---------------------------------------------*/ SAY 'START TIME IS: 'TIME()OFFS=DCL('$DEFINE','LOC')OFFS=DCL('HLQ',1,20,'CHAR')OFFS=DCL('VOL',,6,'CHAR')OFFS=DCL('DSET',,44,'CHAR')OFFS=DCL('DSO',,2,'CHAR')MEMBER_OFFSET=DCL('LRECL',,5,'CHAR')OFFS=DCL('MEMBER',,8,'CHAR') OFFS=DCL('$DEFINE','VTOCOUT')OFFS=DCL('VDSNAME',1,44,'CHAR')OFFS=DCL('VDSO',46,2,'CHAR')OFFS=DCL('VLRECL',50,5,'CHAR')OFFS=DCL('VVOL',56,6,'CHAR') DROP VTOC.VTOC.=''VTOC.0=0CALL OUTTRAP('VTOC.')ADDRESS TSO 'VTOC ALL SORT PRINT(NEW (DSNAME DSO LRECL VOLUME))'CALL OUTTRAP('OFF') /* VTOC. NOW HAS ALL DSNAMES AND A FEW TITLE/TOTAL LINES *//* THE FIRST THREE LINES ARE HEADERS *//* THE LAST LINE IS TITLES *//* INTERMIXED ARE HEADERS THAT BEGIN 'DSNAME' */SAY 'FOUND 'VTOC.0-5' DATASETS ON ALL VOLUMES.'SAY 'PROCESSING... (THIS MAY TAKE A WHILE)'/* CREATE THE INITIAL WORK FILE */FH=OPENDSN("LOCATE.WORK")DO I=4 TO (VTOC.0)-1 /* FIND OUT IF THIS IS A HEADER LINE */ CHECK=STRIP(SUBSTR(VTOC.I,1,8)) IF CHECK='DSNAME' THEN ITERATE /* ITS A HEADER */ /* IF NOT, IT'S A DATA LINE */ IF POS('SYS1.SMP',VTOC.I)>0 THEN DO SAY 'SKIPPING 'VTOC.I' DATASET.' ITERATE END IF POS('SYS1.LOGREC',VTOC.I)>0 THEN DO SAY 'SKIPPING 'VTOC.I' DATASET.' ITERATE END CALL SPLITRECORD 'VTOCOUT',VTOC.I IF VLRECL=0 THEN VDSO='U ' IF VDSO='PS' THEN ITERATE CALL WRITE(FH,SETRECORD('VTOCOUT'),NL)END/* NOW DROP THE VTOC. STEM TO FREE UP MEMORY */DROP VTOC.CALL CLOSE(FH)/* OPEN THE WORK DATASET */WD=OPEN("LOCATE.WORK","R")/* OPEN THE OUTPUT DATASET */OD=OPENDSN("LOCATE.DATA")IF WD<0 THEN SAY "COULD NOT OPEN WORK DATASET."IF OD<0 THEN SAY "COULD NOT OPEN OUTPUT DATASET."IF (WD<1)|(OD<1) THEN ABEND(12) DO FOREVER LINEIN=READ(WD) IF STRIP(LINEIN)='' THEN LEAVE CALL SPLITRECORD 'VTOCOUT',LINEIN IF STRIP(VDSO)="PS" THEN ITERATE CALL DIR("'"STRIP(VDSNAME)"'",'MEMBERS') IF DIRENTRY.0 < 1 THEN DO DROP DIRENTRY. ITERATE END HLQ=SUBSTR(VDSNAME,1,POS('.',VDSNAME)-1) VOL=VVOL DSET=STRIP(VDSNAME) DSO=VDSO MEMBER='' LRECL=RIGHTADJ(STRIP(VLRECL),5) OUTREC=SETRECORD('LOC') DO I=1 TO DIRENTRY.0 MEMBER=STRIP(DIRENTRY.I.NAME) OUTREC=OVERLAY(MEMBER,OUTREC,MEMBER_OFFSET) CALL WRITE(OD,OUTREC,NL) END DROP DIRENTRY.ENDCALL CLOSE(WD)CALL CLOSE(OD)RC=REMOVE("LOCATE.WORK")SAY 'END TIME IS 'TIME()SAY 'ELAPSED: 'TIME('ELAPSED')' SECONDS.'RETURN 0 RIGHTADJ: ARG INSTR,LEN MYLEN=LENGTH(INSTR) IF MYLEN>LEN THEN DO SAY INSTR' IS TOO LONG TO RIGHT ADJUST.' RETURN INSTR END PADLEN=LEN-MYLEN IF PADLEN <0 THEN SAY PADLEN IF PADLEN >LEN THEN SAY PADLEN NEWSTR=COPIES(' ',PADLEN) NEWSTR=NEWSTR||INSTR IF LENGTH(NEWSTR)<>LEN THEN DO SAY 'INVALID RETURN.' ENDRETURN NEWSTROPENDSN: PARSE ARG CDSN IF EXISTS(CDSN)=0 THEN DO RC=CREATE(CDSN,'RECFM=FB,LRECL=128,BLKSIZE=512, UNIT=SYSDA,PRI=500,DIRBLKS=0') IF RC<>0 THEN DO SAY "CANNOT CREATE "LOC_DATA EXIT END END FO=OPEN(CDSN,"W") IF FO<0 THEN DO SAY "UNABLE TO OPEN DATASET ("CDSN")" ABEND(12) ENDRETURN FO
Expand Down
1 change: 1 addition & 0 deletions samples/LOCPAN.REXX
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* BREXX *//* FSS SCRIPT TO QUERY THE LOCATE DATABASE *//* SIGNAL ON ERROR NAME SYS_ERR */LOCATE_DATA="LOCATE.DATA"CALL IMPORT FSSAPIADDRESS FSSCALL FSSINIT"RESET"OFFS=DCL('$DEFINE','LOC')OFFS=DCL('HLQ',1,20,'CHAR')OFFS=DCL('VOL',,6,'CHAR')OFFS=DCL('DSET',,44,'CHAR')OFFS=DCL('DSO',,2,'CHAR')OFFS=DCL('LRECL',,5,'CHAR')OFFS=DCL('MEMBER',,8,'CHAR')SRCH=''WHR='B'DE=EXISTS(LOCATE_DATA)IF DE=0 THEN CALL NO_DATA_SCREEN ELSE CALL MAIN_SCREENDO FOREVER RKEY=FSSREFRESH() IF RKEY=#PFK03 THEN LEAVE IF RKEY=#ENTER THEN DO SRCH=STRIP(FSSFGET('ZSEARCH')) IF LENGTH(SRCH)<3 THEN DO CALL FSSZERRSM 'Refine your search' ITERATE END WHR=FSSFGET('ZWHERE') CALL RUN_SEARCH(SRCH) CALL FORMAT_RESULTS ENDENDEXIT NO_DATA_SCREEN:ADDRESS FSS"RESET"CALL FSSTITLE '*** ERROR ***',#RED+#PROTNOT_LOADED='Unable to open '||LOCATE_DATA||'('||DS||')'CALL FSSTEXT NOT_LOADED,8,1,,#YELLOW+#PROTCALL FSSCURSOR "ZCMD"RETURN MAIN_SCREEN: CALL FSSTITLE 'DATASET/MEMBER LOCATE TOOL',#WHITE+#PROT CALL FSSTEXT 'Search for:',5,3,,#GREEN+#PROT CALL FSSTEXT 'Look for (D)atasets, (M)embers or (B)oth >',8,3,,#GREEN+#PROT CALL FSSFIELD 'ZSEARCH',5,18,44,#HI+#YELLOW+#USCORE CALL FSSFIELD 'ZWHERE',8,46,1,#HI+#YELLOW+#USCORE CALL FSSFSET 'ZWHERE','B' CALL FSSTEXT 'PFK03-EXIT',23,1,,#YELLOW+#PROT CALL FSSCURSOR 'ZSEARCH' RETURN FORMAT_RESULTS: /* CREATE THE BUFFER FOR FMTLIST */ DROP BUFFER. BUFFER.='' BUFFER.0=0 SRCH=STRIP(SRCH) /* TRIM OFF ANY SPACES */ /* LOCLIST _ONLY_ CONTAINS MATCHING RECORDS */ /* HOWEVER IT CONTAINS MATCHES FOR BOTH DATASETS AND MEMBERS */ /* THEY WILL NEED TO BE DIFFERENTIATED IF ZWHERE IS _NOT_ B */ DO I=1 TO LOCLIST.0 D_RESULT='' /* SPLIT THE RECORD */ CALL SPLITRECORD 'LOC',LOCLIST.I M_DSET=STRIP(DSET) M_MEMBER=STRIP(MEMBER) DPOS=POS(SRCH,M_DSET) /* POSITION IN DATASET */ MPOS=POS(SRCH,M_MEMBER) /* POSITION IN MEMBER */ /* IF EITHER OF THE ABOVE IS NON-ZERO IT'S PRESENT */ TEMP=COPIES(' ',80) /* HOLDING FOR OUTPUT TO BUFFER */ /* THE DATASET WILL *ALWAYS* BE NEEDED */ /* BUT WILL ONLY BE DISPLAYED WHEN MEMBER DOESNT MATCH */ /* AND WHR IS D OR B */ DM=M_DSET||'('||MEMBER||')' TEMP=OVERLAY(DM,TEMP,1) IF WHR='M' & MPOS=0 THEN ITERATE IF WHR='D' & DPOS=0 THEN ITERATE TEMP=OVERLAY(STRIP(DSO)||'/'||LRECL,TEMP,62) BUFL=BUFFER.0+1 BUFFER.BUFL=TEMP BUFFER.0=BUFL END IF BUFFER.0=0 THEN DO /* NO RESULTS, DON'T SHOW A LIST, JUST ERRMSG */ CALL FSSZERRSM 'No results found.' CALL FSSZERRLM 'No results were found, try expanding your search.' RETURN end TEMP=COPIES(' ',80) TEMP=OVERLAY('Dataset(MEMBER)',TEMP,1) HDR=OVERLAY('DSO/LRECL',TEMP,62) CALL FMTLIST,,HDR,COPIES('-',80),'LOCATE' CALL MAIN_SCREENRETURN RUN_SEARCH: PARSE ARG SEARCH_PARM DROP LOCLIST. LOCLIST.='' LOCLIST.0=0 ADDRESS TSO "ALLOC F(LOCDAT) DSN("LOCATE_DATA") SHR" IF RC<>0 THEN ABEND(12) "EXECIO * DISKR LOCDAT (STEM LOCLIST. KEEP "SEARCH_PARM "FREE F(LOCDAT)" RETURN SYS_ERR: SAY 'A system error occurred. Most likely you used too broad a search' exit
Expand Down
1 change: 1 addition & 0 deletions samples/LOCRPT.REXX
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* REXX */ LOC_DATA="LOCATE.DATA" OFFS=DCL('$DEFINE','LOC')OFFS=DCL('HLQ',1,20,'CHAR')OFFS=DCL('VOL',,6,'CHAR')OFFS=DCL('DSET',,44,'CHAR')OFFS=DCL('DSO',,2,'CHAR')OFFS=DCL('LRECL',,5,'CHAR')OFFS=DCL('MEMBER',,8,'CHAR') OFFS=DCL('$DEFINE','MEMB')OFFS=DCL('LMARGIN',1,14,'CHAR')OFFS=DCL('MEMBER1',,15,'CHAR')OFFS=DCL('MEMBER2',,15,'CHAR')OFFS=DCL('MEMBER3',,15,'CHAR')OFFS=DCL('MEMBER4',,15,'CHAR')OFFS=DCL('MEMBER5',,15,'CHAR')OFFS=DCL('MEMBER6',,15,'CHAR')OFFS=DCL('MEMBER7',,15,'CHAR') LAST_DSET=''CURRENT_LINE=1MAX_LINES=60PAGE_COUNT=0 PAGE_HEADER.=''PAGE_HEADER.0=0 MEMBER_LINES.=''MEMBER_LINES.0=0 MEMBER_SECTION=0 /* FLAG WHILE PRINTING THE MEMBER LISTING */ /* OPEN THE DATA FILE */DS=OPEN(LOC_DATA,"R")IF DS<0 THEN DO SAY 'COULD NOT OPEN THE LOCATE DATASET ('DS')' EXIT ENDSAY 'START TIME: 'TIME()SAY 'GENERATING YOUR REPORT ON THE CLASS A PRINTER'ADDRESS TSO"ALLOCATE F(PRINTER),SYSOUT(A)"SAY 'PRINTER ALLOCATED'CALL FORMAT_TOPDO FOREVER LINEIN=READ(DS) IF STRIP(LINEIN)='' THEN LEAVE CALL SPLITRECORD 'LOC',LINEIN IF LAST_DSET='' THEN DO /* THIS IS THE FIRST DATASET */ LAST_DSET=DSET CURR_HLQ=HLQ CURR_DSET=DSET CURR_VOL=VOL CURR_DSO=DSO CURR_LRECL=LRECL DSET_MEMBERS=0 DSMEMBERS.='' DSMEMBERS.0=0 END IF DSET=LAST_DSET THEN DO /* IS THERE A MEMBER SPECIFIED? */ IF STRIP(MEMBER)<>'' THEN /* A MEMBER IS PRESENT */ DO DSET_MEMBERS=DSET_MEMBERS+1 DSMEMBERS.DSET_MEMBERS=MEMBER DSMEMBERS.0=DSET_MEMBERS END END ELSE DO /* GENERATE THE PAGE(S) AND SEND IT TO OUTPUT */ CALL FORMAT_DATASET CALL FORMAT_MEMBERS LAST_DSET=DSET DROP DSMEMBERS DSET_MEMBERS=0 /* THIS IS THE FIRST TIME FOR THIS DATASET */ /* PUT THE CURRENT DATASET INFORMATION INTO MEMORY */ CURR_HLQ=HLQ CURR_DSET=DSET CURR_VOL=VOL CURR_DSO=DSO CURR_LRECL=LRECL /* IS THERE A MEMBER SPECIFIED? */ IF STRIP(MEMBER)<>'' THEN /* A MEMBER IS PRESENT */ DO DSET_MEMBERS=DSET_MEMBERS+1 DSMEMBERS.DSET_MEMBERS=MEMBER DSMEMBERS.0=DSET_MEMBERS END END ENDCALL CLOSE('PRINTER')ADDRESS TSO"FREE F(PRINTER)"SAY 'PRINTER RELEASED.'SAY 'END TIME IS: 'TIME()SAY 'ELAPSED: 'TIME('ELAPSED')' SECONDS.'CALL CLOSE(DS)EXIT /* ROUTINES AND FUNCTIONS */ PRINTCR:ARG OUTLINE CALL WRITE('PRINTER',OUTLINE,NL) CURRENT_LINE=CURRENT_LINE+1 IF CURRENT_LINE>(MAX_LINES-3) THEN CALL END_OF_PAGERETURN CURRENT_LINE END_OF_PAGE:/* IF WE HAVE LESS THAN 5 LINES TO THE END OF PAGE, SKIP THEM */ IF CURRENT_LINE<(MAX_LINES-5) THEN RETURN DO FF=CURRENT_LINE TO (MAX_LINES+1) CALL WRITE('PRINTER',' ',NL) END CURRENT_LINE=1 CALL FORMAT_TOPRETURN FORMAT_TOP: DROP HEADER. PAGE_COUNT=PAGE_COUNT+1 HEADER.='' HEADER.1=COPIES('*',132) HEADER_LINE=CENTER('DATASET AND MEMBER LISTING',132) HEADER_LINE=OVERLAY('PAGE: '||PAGE_COUNT,HEADER_LINE,120) HEADER.2=HEADER_LINE HEADER.3=COPIES('*',132) HEADER.4=' ' HEADER.0=4 DO PH=1 TO HEADER.0 CALL PRINTCR(HEADER.PH) END IF MEMBER_SECTION=1 THEN DO CALL PRINTCR(' ') CALL PRINTCR(CURR_DSET||' (CONTINUED)') CALL PRINTCR(' ') ENDRETURN FORMAT_DATASET: OUTLINE=COPIES(' ',132) /* 132 CHAR LINE */ OUTLINE=OVERLAY('HLQ: '||CURR_HLQ,OUTLINE,1) OUTLINE=OVERLAY('DATASET: '||CURR_DSET,OUTLINE,30) OUTLINE=OVERLAY('VOLUME: '||CURR_VOL,OUTLINE,90) OUTLINE=OVERLAY('ORG/LRECL: '||CURR_DSO||'/'||CURR_LRECL,OUTLINE,110) CALL PRINTCR(OUTLINE) RETURN FORMAT_MEMBERS: MEMBER_SECTION=1 DROP MBR_REPORT. MBR_REPORT.='' MBR_REPORT.0=0 MEMBER_LINES=0 MY_MEMBER=0 THISLINE=COPIES(' ',100) CALL PRINTCR('') CALL PRINTCR(COPIES('-',61)||' MEMBERS '||COPIES('-',62)) CALL PRINTCR('') DO I=1 TO DSMEMBERS.0 MY_MEMBER=MY_MEMBER+1 IF MY_MEMBER>7 THEN DO /* START A NEW LINE */ MEMBER_LINES=MEMBER_LINES+1 MBR_REPORT.MEMBER_LINES=THISLINE MBR_REPORT.0=MEMBER_LINES THISLINE=COPIES(' ',100) MY_MEMBER=1 END OFFSET=MY_MEMBER*15 THISLINE=OVERLAY(DSMEMBERS.I,THISLINE,OFFSET) END IF STRIP(THISLINE)<>'' THEN DO /* THERE'S LEFTOVER DATA */ MEMBER_LINES=MEMBER_LINES+1 MBR_REPORT.MEMBER_LINES=THISLINE MBR_REPORT.0=MEMBER_LINES END DO ML=1 TO MBR_REPORT.0 CALL PRINTCR(MBR_REPORT.ML) END CALL PRINTCR(' ') MEMBER_SECTION=0 CALL END_OF_PAGERETURN
Expand Down
1 change: 1 addition & 0 deletions samples/LVOLMVS.REXX
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
call listvols -- which Volumes are contained this MVS say 'MVS Volume Statistics' say ' +- TRACKS + Track +------ Tracks ------ % + +-- Free -+' say 'Volume Type CYLS /CYL Total Length Allocated not Used used Tracks %' say '-----------------------------------------------------------------------------' do i=1 to volumes.0 -- Run through every single Volume call VolReport word(volumes.i,1) -- fetch details of it end return /* -------------------------------------------------------------------- * Report Detail of Volume * -------------------------------------------------------------------- */ VolReport: parse arg volume Call ListVol volume if voltrks=0 then return -- Volume is not properly assigned if VOLTRKALC>0 then pct=round(VOLTRKUSED*100/VOLTRKALC,1) else pct=0.0 say VolVolume VOLTYPE right(VOLCYLS,4) right(VOLTRKCYL,5) right(VOLTRKS,6) right(VOLTRKLEN,8), right(VOLTRKALC,9) right(VOLTRKALC-VOLTRKUSED,8) right(pct,6), right(VOLTRKS-VOLTRKALC,7) right(round(VOLTRKALC*100/Voltrks,1),5) return
Expand Down
Loading

0 comments on commit dc8e002

Please sign in to comment.