Here are two SRST examples:
Example #1: Find the first blank in a dataset name, and move the
non-blank ****tion into an underscore-padded field. In this example, we
do not check condition codes, since we are searching less than 256
bytes, and if no blank is found, we want to move all 44 bytes anyway.
LA R14,FILENAME GET STARTING AND..
LA R15,L'FILENAME(,R14) ..ENDING ADDRS OF FILENAME
LHI R0,C' ' SET TO SEARCH FOR A BLANK
SRST R15,R14 FIND FIRST BLANK IN FILENAME
LR R1,R15 LOGICAL END ADDR OF FILENAME
SR R1,R14 SUBTRACT TO GET LOGICAL LENGTH
BCTR R1,0 DECREMENT FOR EXECUTED MVC
EX R1,DSNMOVE MOVE FILE NAME TO ATTR STRING
...
DSNMOVE MVC NQMODDSN(0),FILENAME EXECUTED MOVE OF DSNAME
FILENAME DS CL44 FILE NAME
NQMODDSN DC 44C'_' DATASET NAME PADDED W/"_"
Example #2: Search for the string "COMPILED-" within a loaded program.
This example illustrates testing for the "retry" and "not found"
conditions.
L R14,INQLOAD LOAD THE PROGRAM LOAD POINT
L R15,INQLENG LOAD THE LENGTH OF THE PROGRAM
AR R15,R14 NOW 15 POINTS AT END OF PGM
ST R15,SAVREG15 SAVE OFF THE PGM END POINT
LA R0,X'C3' SET TO SEARCH FOR A C
BLDDTL60 DS 0H
SRST R15,R14 GO SEARCH FOR THE C(OMPLIE)
BC 1,BLDDTL60 RAN OUT OF TIME, KEEP LOOKING
BC 2,BLDDTL90 NOT FOUND, EXIT
*
CLC 0(9,R15),=CL9'COMPILED-' IS THIS IT ?
BNE BLDDTL65 NO, KEEP A LOOKING
TM 10(R15),X'F0' IS THE NEXT BYTE NUMERIC
BO BLDDTL70 YES, I THINK WE HAVE IT
BLDDTL65 DS 0H
LR R14,R15 POINT R14 WHERE R15 IS POINTING
LA R14,1(,R14) BUMP TO THE NEXT BYTE
L R15,SAVREG15 POINT R15 BACK TO END OF PGM
B BLDDTL60 KEEP SEARCHING FOR COMPILED
*
BLDDTL70 DS 0H
LR R1,R15 POINT R1 AT THE "COMPILED"
ST R1,ABSADDRW STORE ABSOLUTE ADDRESS
...
SAVREG15 DS F SAVE OFF REG 15
ABSADDRW DS F ABSOLUTE ADDRESS WORK FIELD
INQLENG DS AL4 LENGTH OF PROGRAM
INQLOAD DS AL4 PROGRAM LOAD POINT
Pete
jim wrote:
> Anybody have a working version of CUSE or SRST? Thanks.


|