-
Notifications
You must be signed in to change notification settings - Fork 28
REXX script for replacing substring in some members of dataset
AnatolyKolbasin edited this page Feb 8, 2021
·
1 revision
MASSREPL was created to replace substring with new one in some members of dataset on z/OS
Link to REXX script sources (MASSREPL)
Script configuration before execution
- Replace dataset's members names MEMBER1,MEMBER2,.. with members you need:
membersToProcess='MEMBER1 MEMBER2 MEMBER3 MEMBER4'
- Put the script to your REXX-library
Execution:
Run JCL job with step:
//RUNSCRPT EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=0M,
// PARM='MASSREPL USR01.USRHLQ.USRLIB HLQ1 HLQ2'
//SYSEXEC DD DSN=USR01.USRHLQ.REXX,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
-
USR01.USRHLQ.USRLIB
- dataset with members to be changed -
HLQ1 HLQ2
- substring HLQ1 to be replaced with substring HLQ2
Script source:
/* REXX */
trace off
parse arg parms
parms = translate(parms,' ',',')
/*parms = 'USR01.USRHLQ.USRLIB &HLQ1 &HLQ2'*/
parse var parms dataset oldString newString
/* Globals */
membersToProcess='MEMBER1 MEMBER2 MEMBER3 MEMBER4'
/* End of globals */
/**************/
/* Main loop */
/**************/
say 'Start replacing substring 'oldString' by 'newString
say 'in members of library 'dataset
say
do i=1 to words(membersToProcess)
member = word(membersToProcess,i)
fullname = dataset'('member')'
say 'Process member 'member
call processFile fullname oldString newString
end
say 'Processing completed'
Return
/**************************/
/* Update member contents */
/**************************/
processFile:
parse arg fileName oldSubstr newSubstr
address TSO
drop lines.
"ALLOC F(UPDATEDD) DA('"fileName"') OLD"
"EXECIO * DISKR UPDATEDD (STEM lines. FINIS"
occ = 0
do ix = 1 to lines.0
parse var lines.ix strPrefix (oldSubstr) strSuffix
if strSuffix <> ''
then do
lines.ix = strPrefix || newSubstr || strSuffix
occ = occ + 1
end
else lines.ix = strPrefix
end
"EXECIO * DISKW UPDATEDD (STEM lines. FINIS"
"FREE F(UPDATEDD)"
say occ 'occurrences processed'
return
SMP/E
- How do I check if the APAR or the PTF installation?
- JCL job to create SMP/e zones environment and user datasets
- JCL job to customize SMP/e distribution zone environment
- JCL job to customize SMP/e global zone environment
- JCL job to customize SMP/e target zone environment
- JCL job to load PTF information into global zone and SMP/e datasets
- JCL job to install PTF in the SMP/e target libraries
- JCL job to install PTF in the SMP/e distribution libraries
- JCL job for rejecting PTF to clean up the global zone
- JCL job for restoring PTF to clean up the target zone
- Automated build PTF via JCL + REXX template (IN PROGRESS)
- What should I do if RECEIVE ends with RC=12?
Mainframe automation solutions and best practices
- Mainframe DevOps tutorial – How We Bring DevOps and Automation to Mainframe
- Jenkins MF pipeline code example
- Mainframe integration with Jenkins using USS agent
- Jenkins plug in solution for running JCL jobs
- Mainframe troubleshooting platform - APPULSE
- Azure DevOps with MF (IN PROGRESS)
- Zigi
z/OS DevOps scripts
- Shell script for datasets to transfer from UNIX to the mainframe via ftp
- Shell script to run JCL jobs on the mainframe via ftp
- Shell script to transfer changed sources in git to the mainframe via ftp
RACF
REXX scripts
- REXX script to change parameters values in a config file
- REXX script to replace substring in some members of dataset
ISPF
HSM
- HSM dataset level commands
- HSM system commands
- How do I restore datasets anywhere where HSM is working?
Useful tricks
- How to include a library in the current LOGON session
- How to make IBM Java work for TEP file tep.jnlp
- How to migrate one or more data sets to migration volumes
- How to transfer file from Windows to zOS with command line ftp?
- How do I find out which data sets have used the most amount of space?
- How do I convert a hexadecimal date to a readable date on z/OS?
- How do I compare two data sets interactively?
- How do I use 3270 emulators with a larger screen size?
- How do I make some changes in each member of PDS?
- How do I copy data sets to other LPAR?
Batch jobs (JCLs)
- How to automate checking for normal completion of a job (counting the number of lines)?
- How do I create a Data Set or a Data Set member?
- How do I copy a Data Set or a Data Set member?
- How do I fill VSAM with records?
- How do I rename a Data Set in batch?
- How do I delete a Data Set or a Data Set member?
- How do I compress a Partitioned Data Set?
- How do I convert Partitioned Data Set PDS to Partitioned Data Set Extended PDSE and vice versa?
- How do I split a Sequential Data Set or PDS member?
- How do I copy first n records of Sequential Data Set or PDS member?
- How do I work with a Catalog?
- Replacing archaic JCL constructs
- Sample solution to transfer datasets from one system to another using XMIT and ADRDSSU
- JCL job template for evenly dividing the dataset into parts
- How to work with a Catalog?
z/OS System operating
- z/OS network commands
- JES commands
- SDSF commands
- XMIT
- WLM (COMING SOON, STAY TUNED)
- IPL and its maintenance
- Omegamon for Storage
- Omegamon for DB2
z/OS Subsystem operating