Advertisement
Dronky

Final practice

Jul 20th, 2016
1,213
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* REXX */                                                            
  2. ARG volser ds method nds                                              
  3. /* CHECK FOR RENAME */                                                
  4. if (nds='' & method/='RENAME')|(nds/='' & method='RENAME') then        
  5. do                                                                    
  6.   CALL FIND                                                            
  7.   SEQ=2+(SEQ-1)*3                                                      
  8. /* THE GENERAL PART OF ALL CODES */                                    
  9.   queue "//a31job1  JOB A31,LEVIN,NOTIFY=&SYSUID,MSGCLASS=X"          
  10.   queue "//STEP01   EXEC PGM=ADRDSSU"                                  
  11.   queue "//SYSPRINT DD SYSOUT=*"                                      
  12.   queue "//FROM  DD DISP=SHR,UNIT=T1,VOL=SER="TAPE",LABEL=("SEQ",BLP)"
  13.   /* PART OF THE'TEMP' METHOD*/                                        
  14.   IF method='TEMP' THEN                                                
  15.   DO                                                                  
  16.     queue "//TO       DD DISP=SHR,UNIT=SYSDA,VOL=SER=WORKTS"          
  17.     queue " RESTORE  DATASET(INCLUDE("DS"))-"                          
  18.     queue " INDD(FROM) OUTDD(TO) TOLERATE(ENQFAILURE) -"              
  19.     queue " CANCELERROR ADMIN REPLACE"                                
  20.     queue "$$"                                                        
  21.     "submit * end($$)"                                                
  22.   END                      
  23.    /* PART OF THE 'REPLACE' METHOD */                                
  24.   ELSE                                                              
  25.   IF method='REPLACE' THEN                                          
  26.   DO                                                                
  27.     queue "//TO       DD DISP=SHR,UNIT=SYSDA,VOL=SER="VOLSER""      
  28.     queue " RESTORE  DATASET(INCLUDE("DS"))-"                        
  29.     queue " INDD(FROM) OUTDD(TO) TOLERATE(ENQFAILURE) -"            
  30.     queue " CANCELERROR ADMIN REPLACE"                              
  31.     queue "$$"                                                      
  32.     "submit * end($$)"                                              
  33.   END                                                                
  34.   /* PART OF THE 'RENAME' METHOD */                                  
  35.   ELSE                                                              
  36.   IF method='RENAME' THEN                                            
  37.   DO                                                                
  38.     IF SYSDSN("'"NDS"'")/='OK' THEN                                  
  39.     DO                                                              
  40.       queue "//TO       DD DISP=SHR,UNIT=SYSDA,VOL=SER="VOLSER""    
  41.       queue " RESTORE  DATASET(INCLUDE("DS"))-"                      
  42.       queue " INDD(FROM) OUTDD(TO) TOLERATE(ENQFAILURE) -"          
  43.       queue " CANCELERROR ADMIN RENAMEUNCONDITIONAL("DS","NDS") -"  
  44.       queue " CATALOG"                                              
  45.       queue "$$"        
  46.        "submit * end($$)"                                          
  47.      END                                                            
  48.      /* NAME CHECK */                                              
  49.      ELSE                                                          
  50.      SAY 'CHOOSE A DIFFERENT NAME,IT ALREADY EXISTS'                
  51.    end                                                              
  52.  END                                                                
  53.  else                                                              
  54.  say 'invalid parameters'                                          
  55.  EXIT 0                                                            
  56.  /* MAIN FIND PROC */                                              
  57.  FIND: PROCEDURE EXPOSE VOLSER TAPE SEQ                            
  58.  /* FINDING VOLSER */                                              
  59.  /* cutting disk name */                                            
  60.  DSNLOG=SYSDSN("'SOFT.SUPPORT("VOLSER")'")                          
  61.  /* CHECKING IF DISK NAME IS EXISTS IN SOFT SUPPORT */              
  62.  IF DSNLOG='OK' THEN                                                
  63.  DO                                                                
  64.    "alloc da('SOFT.SUPPORT("VOLSER")') F(INPUT) shr reuse"          
  65.    "execio * diskr INPUT (stem VOL. finis"                          
  66.    "FREE F(INPUT)"                                                  
  67.    TAPE=SUBSTR(VOL.3,57,6)                                          
  68.    /* IF TEMP FILE(LIB1) IS EXISTS */                              
  69.   /* THEN DELETE IT */                                              
  70.   if sysdsn("'LIB1'")='OK' THEN                                      
  71.   DO                                                                
  72.   ADDRESS TSO "DELETE 'LIB1'"                                        
  73.   END                                                                
  74.   /* LISTING OUT ALL FILES FROM THE TAPE: */                        
  75.   "HSEND LIST DUMPVOLUME("TAPE") ODS('LIB1')"                        
  76.   /* FINDING PROCESS */                                              
  77.   /* WAITING FOR PREVIOUS FREE F() */                                
  78.   ADDRESS SYSCALL 'sleep 1'                                          
  79.   "alloc da('lib1') F(indd) shr reuse"                              
  80.   "execio * diskr indd (stem strings. finis"                        
  81.   "free f(indd)"                                                    
  82.   /* P - VARIABLE FOR INCREMENTING STEMS AND CHECKING FIND RESULT */
  83.   P=0                                                                
  84.   DO I=1 TO STRINGS.0                                                
  85.   IF INDEX(STRINGS.I,' 'VOLSER' ') /= 0 THEN                        
  86.     DO                                                              
  87.       P=P+1                                                          
  88.       STRS.0=P                                                      
  89.       STRSFULL.0=P                                                  
  90.       STRS.P=SUBSTR(STRINGS.I,25,3)                                  
  91.       STRSFULL.P=STRINGS.I                                          
  92.    END                                                            
  93.  END                                                              
  94.  IF P /= 0 THEN                                                    
  95.  DO                                                                
  96.    IF P>1 THEN                                                    
  97.    DO                                                              
  98.      /* SETTING UP 1ST LINE AS INITIAL YYYY/MM/DD */              
  99.      Y=SUBSTR(STRSFULL.1,50,4)                                    
  100.      M=SUBSTR(STRSFULL.1,55,2)                                    
  101.      D=SUBSTR(STRSFULL.1,58,2)                                    
  102.      SEQ=SUBSTR(STRSFULL.1,25,3)                                  
  103.      DO I=2 TO STRS.0                                              
  104.        IF SUBSTR(STRSFULL.I,50,4)>Y THEN                          
  105.        DO                                                          
  106.          Y=SUBSTR(STRSFULL.I,50,4)                                
  107.          M=SUBSTR(STRSFULL.I,55,2)                                
  108.          D=SUBSTR(STRSFULL.I,58,2)                                
  109.          SEQ=SUBSTR(STRSFULL.I,25,3)                              
  110.        END                                                        
  111.        ELSE                                                        
  112.        IF SUBSTR(STRSFULL.I,50,4)=Y THEN                          
  113.        DO                                                          
  114.          IF SUBSTR(STRSFULL.I,55,2)>M THEN                        
  115.           DO                                                      
  116.             M=SUBSTR(STRSFULL.I,55,2)                              
  117.             D=SUBSTR(STRSFULL.I,58,2)                              
  118.             SEQ=SUBSTR(STRSFULL.I,25,3)                            
  119.           END                                                      
  120.           ELSE                                                    
  121.           IF SUBSTR(STRSFULL.I,55,2)=M THEN                        
  122.           DO                                                      
  123.             IF SUBSTR(STRSFULL.I,58,2)>D THEN                      
  124.             DO                                                    
  125.               D=SUBSTR(STRSFULL.I,58,2)                            
  126.               SEQ=SUBSTR(STRSFULL.I,25,3)                          
  127.             END                                                    
  128.           END                                                      
  129.         END                                                        
  130.       END                                                          
  131.       SEQ=2+(SEQ-1)*3                                                    
  132.       /* SAY 'LAST DATE:'||Y||'/'||M||'/'||D||' */                
  133.       RETURN 1                                                    
  134.     END                                                            
  135.     ELSE                                                          
  136.     DO                                                            
  137.     SEQ=SUBSTR(STRSFULL.1,25,3)*1            
  138.     SEQ=2+(SEQ-1)*3                          
  139.     RETURN 1                                                          
  140.     END                                                              
  141.   END                                                                
  142.   ELSE                                                                
  143.   EXIT 0                                                              
  144. END                                                                  
  145. ELSE                                                                  
  146. DO                                                                    
  147. SAY VOLSER 'NOT FOUND ON SOFT.SUPPORT'                                
  148. RETURN 0                                                              
  149. END
Advertisement
RAW Paste Data Copied
Advertisement