/* REXX */ /********************************************************************/ /* REXX STARTED FROM &SYSUID..USER.CLIST(MOVESMS) **/ /* AUTOR: B. BRUECKMANN 07/12/96 **/ /* DOC: MOVE OF DATASET **/ /* CALLING(NON-ISMF): MOVESMS DSN OPTION **/ /* CALLING(ISMF) : MOVESMS OPTION **/ /* ALL OPTIONS DISPLAYED WHEN CALLING WITH MOVESMS DSN **/ /* CAN BE USED **/ /********************************************************************/ /************************************************************/ /* MOVESMS DSN */ /* MOVE DATASET TO NEW SMS-DISC AND CHANGE PARAMETERS */ /* AUTOR: B. BRUECKMANN */ /* CALLING:MOVESMS DSN PRINT=DA(*)!DUMMY OR OTHER ALLOC-PARM*/ /* MOVESMS DSN SPACE(140 40) */ /************************************************************/ TRACE OFF DSYSIN="'"!!SYSVAR(SYSUID).SYSIN!!"'" ADDRESS ISPEXEC "VGET (COBJ) SHARED" IF RC=0 THEN DO /* ISMF */ DSN=COBJ PARSE UPPER ARG PARM1 PARM2 PARM3 PARM4 PARM5 PARM6 PARM7 . END ELSE /* NON-ISMF */ PARSE ARG DSN PARM1 PARM2 PARM3 PARM4 PARM5 PARM6 PARM7 . PARM=PARM1!!" "!!PARM2!!" "!!PARM3!!" "!!PARM4!!" "!!PARM5 PARM=PARM!!PARM6!!" "!!PARM7 "CLEAR" IF POS('DEBUG',PARM)>0 THEN TRACE R RCALL=0 UNITS=0 DATACLAS='' DUMMY=OUTTRAP(MSG.) "LISTC ENTRIES("DSN") ALL" DUMMY=OUTTRAP(OFF) DO I=1 TO MSG.0 IF POS('DATACLASS',MSG.I)>0 THEN DO DATACLAS=SUBSTR(MSG.I,POS('DATACLASS -',MSG.I)+10) DATACLAS=STRIP(DATACLAS,'L','-') DATACLAS=SUBSTR(DATACLAS,1,POS(' ',DATACLAS)-1) END IF POS('VOLSER-',MSG.I)>0 THEN DO UNITS=UNITS+1 END END IF POS("DA(*)",PARM)=0 THEN PRINT='DUMMY' SAY "KOMMANDOUTPUT AUF " PRINT DSNN=STRIP(DSN,B,'''') SAY "MOVE DATASET" SAY DSNN DSNT="'"!!DSNN!!".TEMP'" DSNN="'"!!DSNN!!"'" IF POS('DEBUG',PARM)>0 THEN DUMMY=MSG(ON) ELSE DUMMY=MSG(OFF) X=LISTDSI(DSNN) IF X>0 THEN DO SAY '***************************************' SAY '* ERROR ' X 'IN LISTDSI FOR DSN='DSN IF X=4 THEN SAY '* UNIT ERROR 'SYSUNIT SAY '***************************************' END SAY "DSORG = " SYSDSORG IF SUBSTR(SYSDSORG,1,2)='PO' THEN DO DUMMY=MSG(OFF) "DELETE "DSYSIN"" DUMMY=MSG(ON) "ALLOC FILE (IN) DSN("DSNN") SHR" IF SYSDSN(DSNT) = 'OK' THEN "DELETE "DSNT"" /* ALLOC DES NEUEN DSNS */ IF SYSUSED=0 THEN DO /* FEHLER IN SYSUSED KORRIEREN */ SYSUSED=SYSSECONDS*(SYSEXTENTS-1)+SYSPRIMARY END IF SYSPRIMARYSYSADIRBLK THEN DIRBLK=SYSUDIRBLK+34 ELSE DIRBLK=SYSADIRBLK VOLUME=SYSVOLUME IF SYSUNITS='CYLINDER' THEN SYSUNITS='CYLINDERS' IF SYSUNITS='BLOCK' THEN SYSUNITS='BLOCK('!!SYSBLKSIZE!!')' SAY "OLD VALUES SPACE("SYSPRIMARY" "SYSSECONDS") DIR("SYSADIRBLK")" SAY " SPACEUSE "SYSUSED" USED DIR("SYSUDIRBLK")" SAY " SYSUNITS "SYSUNITS" SYSVOLUME "SYSVOLUME"" SAY " UCOUNT "UNITS" DATACLAS("DATACLAS")" DATA="ALLOC FILE (OUT) DSN("DSNT") NEW CATALOG LIKE("DSNN") " DATA=DATA!!"DIR("DIRBLK") SPACE("PRIM" "SYSSECONDS") UNIT(3390)" DATA=DATA!!" "SYSUNITS" UCOUNT("UNITS") DATACLAS("DATACLAS")" DO WHILE PARM<>'' IF POS('DEBUG',PARM)>0 THEN PARM=DELSTR(PARM,POS('DEBUG',PARM),5) IF POS('TRACKS',PARM) OR POS('CYLINDERS',PARM)>0 OR, POS('BLOCK',PARM)>0 THEN DO IF POS('TRACK',DATA)>0 THEN DATA=DELSTR(DATA,POS('TRACK',DATA),7) IF POS('BLOCK',DATA)>0 THEN DO I=POS('BLOCK',DATA) I=POS(')',SUBSTR(DATA,I)) DATA=DELSTR(DATA,POS('BLOCK',DATA),I) END IF POS('CYLIND',DATA)>0 THEN DATA=DELSTR(DATA,POS('CYLIND',DATA),10 ) IF POS('TRACKS',PARM)>0 THEN I=POS('TRACKS',PARM) IF POS('BLOCKS',PARM)>0 THEN I=I+POS('BLOCKS',PARM) IF POS('CYLIND',PARM)>0 THEN I=I+POS('CYLINDER',PARM) N=POS(' ',SUBSTR(PARM,I)) IF N=0 THEN N=LENGTH(SUBSTR(PARM,I)) DATA=DATA" "SUBSTR(PARM,I,N); /* GEFUNDENEN PARAMETER ANHAENGEN */ PARM=DELSTR(PARM,I,N) /* UND AUS DER PARAMETERLISTE LOESCHEN */ END TEMP=SUBSTR(PARM,1,POS('(',PARM)) I=POS(')',PARM) IF POS(TEMP,DATA)>0 THEN DO XX=SUBSTR(DATA,1,POS(TEMP,DATA)-1) DATA=DELSTR(DATA,1,POS(TEMP,DATA)-1) DATA=DELSTR(DATA,1,POS(')',DATA)) XX=XX!!SUBSTR(PARM,1,POS(')',PARM)) PARM=DELSTR(PARM,1,POS(')',PARM)) DATA=XX!!DATA /*PARM=DELSTR(PARM,1,I) */ END ELSE DO IF I>0 THEN DO DATA=DATA!!" "!!SUBSTR(PARM,1,POS(')',PARM)) PARM=DELSTR(PARM,1,I) END END END IF POS('DATACLAS((NULL))',DATA)>0 THEN DATA=DELSTR(DATA,POS('DATACLAS((NULL))',DATA),16) IF POS('DATACLAS()',DATA)>0 THEN DATA=DELSTR(DATA,POS('DATACLAS()',DATA),10) DATA=SPACE(DATA,1) SAY "NEW VALUES " SAY DATA SAY "ALLOC OK: ENTER J" PULL WAHL UPPER WAHL IF WAHL<>'J' THEN EXIT INTERPRET "DATA" IF RC='' THEN RC=0 RMALL=RCALL+RC "ALLOC FILE (SYSUT4) UNIT(SYSDA) SPACE(1,1) CYLINDERS NEW" "ALLOC FILE(TEMP) DA ("DSYSIN") NEW SPACE(1,1) LRECL(80) BLKSIZE(80) CATALOG" TEMP1=" COPY INDD=IN,OUTDD=OUT" "EXECIO 1 DISKW TEMP (STEM TEMP FINIS" "FREE FI(TEMP)" "FREE FI(SYSIN)" "ALLOC FILE(SYSIN) DA ("DSYSIN") SHR" "FREE FI(SYSPRINT)" "ALLOC FILE(SYSPRINT) "!!PRINT /* CALL IEBCOPY TO COPY PROFILE */ "CALL 'SYS1.LINKLIB(IEBCOPY)'" IF RC='' THEN RC=0 RCALL=RCALL+RC SAY "... COMPLETED IEBCOPY, RETURN CODE = " RC IF RC=8 THEN SAY ".. RETURN CODE 8 -- SEVERE ERROR - CHECK THE IEBCOPY SYSPRINT" IF RC = 4 THEN SAY ".. RETURN CODE 4 -- MEMBERS ARE POSSIBLY MISSING - CHECK THE IEBCOPY SYSPRINT" "FREE FILE (IN,OUT,SYSUT4,SYSIN,SYSPRINT)" DUMMY=MSG(OFF) "ALLOC FI(SYSIN) DA(*)" "DELETE "DSYSIN"" RCALL=RCALL+RC IF RCALL=0 THEN DO "DELETE "DSNN"" "REN "DSNT" "DSNN"" END DUMMY=MSG(ON) END IF SUBSTR(SYSDSORG,1,2)='PS' THEN DO /* PS-DATEIEN */ RCALL=0 "FREE FI(SYSPRINT)" "ALLOC FILE(SYSPRINT) "!!PRINT IF SYSDSN(DSNT) = 'OK' THEN "DELETE "DSNT"" /* ALLOC DES NEUEN DSNS */ IF SYSUSED=0 THEN DO /* FEHLER IN SYSUSED KORRIEREN */ SYSUSED=SYSSECONDS*(SYSEXTENTS-1)+SYSPRIMARY END IF SYSPRIMARY'' IF POS('DEBUG',PARM)>0 THEN PARM=DELSTR(PARM,POS('DEBUG',PARM),5) IF POS('TRACKS',PARM) OR POS('CYLINDERS',PARM)>0 OR, POS('BLOCK',PARM)>0 THEN DO IF POS('TRACK',DATA)>0 THEN DATA=DELSTR(DATA,POS('TRACK',DATA),7) IF POS('BLOCK',DATA)>0 THEN DO I=POS('BLOCK',DATA) I=POS(')',SUBSTR(DATA,I)) DATA=DELSTR(DATA,POS('BLOCK',DATA),I) END IF POS('CYLIND',DATA)>0 THEN DATA=DELSTR(DATA,POS('CYLIND',DATA),10) IF POS('TRACKS',PARM)>0 THEN I=POS('TRACKS',PARM) IF POS('BLOCKS',PARM)>0 THEN I=I+POS('BLOCKS',PARM) IF POS('CYLIND',PARM)>0 THEN I=I+POS('CYLINDER',PARM) N=POS(' ',SUBSTR(PARM,I)) IF N=0 THEN N=LENGTH(SUBSTR(PARM,I)) DATA=DATA!!SUBSTR(PARM,I,N); /* GEFUNDENEN PARAMETER ANHAENGEN */ PARM=DELSTR(PARM,I,N) /* UND AUS DER PARAMETERLISTE LOESCHEN */ END TEMP=SUBSTR(PARM,1,POS('(',PARM)) I=POS(')',PARM) IF POS(TEMP,DATA)>0 THEN DO XX=SUBSTR(DATA,1,POS(TEMP,DATA)-1) DATA=DELSTR(DATA,1,POS(TEMP,DATA)-1) DATA=DELSTR(DATA,1,POS(')',DATA)) XX=XX!!SUBSTR(PARM,1,POS(')',PARM)) PARM=DELSTR(PARM,1,POS(')',PARM)) DATA=XX!!DATA PARM=DELSTR(PARM,1,I) END ELSE DO IF I>0 THEN DO DATA=DATA!!" "!!SUBSTR(PARM,1,POS(')',PARM)) PARM=DELSTR(PARM,1,I) END END END IF POS('DATACLAS((NULL))',DATA)>0 THEN DATA=DELSTR(DATA,POS('DATACLAS((NULL))',DATA),16) IF POS('DATACLAS()',DATA)>0 THEN DATA=DELSTR(DATA,POS('DATACLAS()',DATA),10) DATA=SPACE(DATA,1) SAY "NEW VALUES " SAY DATA SAY "ALLOC OK: ENTER J" PULL WAHL UPPER WAHL IF WAHL<>'J' THEN EXIT INTERPRET "DATA" /* DO ALLOC */ IF RC='' THEN RC=0 RCALL=RCALL+RC IF RCALL>0 THEN DO SAY '********************************************' SAY '* ALLOC ERROR 'RCALL' FOR DATASET 'DSNT SAY '********************************************' EXIT 8 END DUMMY=MSG(ON) "ALLOC FILE (SYSUT1) DSN("DSNN") SHR" "ALLOC FILE (SYSUT2) DSN("DSNT") SHR" "FREE FI(SYSIN)" "ALLOC FILE (SYSIN) DUMMY" "CALL 'SYS1.LINKLIB(IEBGENER)'" IF RC='' THEN RC=0 RCALL=RCALL+RC SAY "... COMPLETED IEBGENER, RETURN CODE = " RC IF RC=8 THEN SAY ".. RETURN CODE 8 -- SEVERE ERROR - CHECK THE IEBGENER SYSPRINT" "FREE FILE (SYSUT1,SYSUT2,SYSIN,SYSPRINT)" DUMMY=MSG(OFF) "ALLOC FI(SYSIN) DA(*)" /*"SMC FROMDATASET("DSNN") TODATASET("DSNT")" RCALL=RCALL+RC */ DUMMY=MSG(OFF) IF RCALL<=4 THEN DO "DEL "DSNN"" "REN "DSNT" "DSNN"" END DUMMY=MSG(ON) END IF SUBSTR(SYSDSORG,1,2)='VS' THEN DO /* VS-DATEIEN */ ADDRESS TSO "IDLSTDEF "DSNN" OPTION=MOVE" /* USE OWN UTILITY */ END DUMMY=MSG(OFF) "FREE FI(SYSPRINT)" DUMMY=MSG(ON) "ALLOC FILE(SYSPRINT) DA(*)" EXIT