Yes, I had overlooked that BLDL requires a member name.
My comments were based on the following, written some 25+ years ago:
PDSRENMB CSECT START CONTROL SECTION
00003300
*
00003400
***********************************************************************
00003500
********************** MACROS *****************************************
00003600
*
00003700
MACRO
00003800
&L READREC &FILE
00003900
&L GET &FILE READ &FILE RECORD
00004000
MVC INPUT(80),0(R1) MOVE FROM BUFFER TO INPUT AREA
00004100
MEND
00004200
*
00004300
MACRO
00004400
&L WRITEREC
00004500
&L PUT REPORTS,OUTPUT OUTPUT REPORT RECORD
00004600
MEND
00004700
*
00004800
*********************** END OF MACROS *********************************
00004900
***********************************************************************
00005000
*
00005100
**********************************************************************
00005200
******* INITIAL PROCESSING *******************************************
00005300
**********************************************************************
00005400
*
00005500
NAMEOFT EQU NAME-*
00005600
TTROFT EQU TTR-*
00005700
NEWNAMEOFT EQU N_NAME-*
00005800
KOFT EQU K-*
00005900
COFT EQU C-*
00006000
INPUTOFT EQU INPUT-*
00006100
*
00006200
BEGIN STM R14,R12,12(R13) SAVE REGISTERS 14->12 TO OFFSET 12
00006300
LR R11,R15 LOAD ENTRY POINT LOCATION INTO R11
00006400
USING PDSRENMB,R11 DEFINE R11 AS BASE REGISTER
00006500
ST R13,SAVEBLK+8 SAVEAREA BACKWARD POINTER
00006600
LR R6,R13
00006700
LA R13,SAVEBLK
00006800
ST R13,4(,R6) SAVEAREA FORWARD POINTER
00006900
*
00007000
***********************************************************************
00007100
******** START OF PROGRAM CODE PROPER *********************************
00007200
***********************************************************************
00007300
*
00007400
OPEN (SYSIN,(INPUT))
00007500
L R4,=F'64' FOR COUNTING ¬> 64 CARDS
00007600
LA R9,0(,R11) FOR INDEXING MEMBER NAMES + BASE
00007700
S R9,=F'14'
00007800
LA R10,0(,R11) FOR INDEXING NEWNAMES + BASE
00007900
S R10,=F'8'
00008000
*
00008100
* DO UNTIL THERE ARE NO MORE SYSIN RECORDS
00008200
*
00008300
NEXT READREC SYSIN
00008400
LA R5,0(,R11) USE R5 AS PSEUDO BASE REG
00008500
LA R6,1 USE R6 AS INDEX INCREMENT
00008600
*
00008700
* 'MEMBER=' = 7
00008800
* ',' = 1
00008900
* 'NEWNAME=' = 8
00009000
* <MEMBERNAME> = 1 MIN
00009100
* <NEWNAME> = 1 MIN
00009200
* OFFSET = POSITION - 1
00009300
* 72-7-1-8-1-1-1=53
00009400
*
00009500
LA R7,53(,R11) USING R7 AS INDEX UPPER LIMIT FOR
00009600
* SYSIN CARD (UP TO COL 72 MAX).
00009700
*
00009800
* FIND 'MEMBER=' STRING IN CURRENT SYSIN CARD.
00009900
*
00010000
FINDM CLI INPUTOFT(R5),C'M' LOOK FOR CHAR 'M' AT CURRENT POS.
00010100
BE CHK1A
00010200
BXLE R5,R6,FINDM IF NOT FOUND TRY NEXT POSITION UP
00010300
B NOTFND
00010400
*
00010500
CHK1A CLC INPUTOFT(7,R5),=C'MEMBER=' IS IT 'MEMBER='?
00010600
BE OK1
00010700
BXLE R5,R6,FINDM NO: START AGAIN FROM NEXT POS. UP
00010800
B NOTFND
00010900
*
00011000
OK1 LA R5,7(,R5) YES: SHIFT UP TO READ NAME
00011100
ST R5,STRTMEM SAVE START POSITION OF NAME
00011200
LR R8,R5 AND IN R8 FOR "EX R12,MOVEMEM"
00011300
*
00011400
FINDC CLI INPUTOFT(R5),C',' LOOK FOR COMMA
00011500
BE CHK1B
00011600
BXLE R5,R6,FINDC NOT FOUND? SHIFT UP & TRY AGAIN
00011700
B NOTFND
00011800
*
00011900
CHK1B ST R5,ENDMEM FOUND: NOW CHECK MEMBER NAME
00012000
LR R12,R5
00012100
S R12,STRTMEM ENDMEM - STRTMEM = MEMNAME LENGTH
00012200
BE NOTFND 0 LENGTH NOT ALLOWED
00012300
C R12,=F'9'
00012400
BNL NOTFND LENGTH > 8 NOT ALLOWED
00012500
*
00012600
STH R12,LENMEM MEMNAME LENGTH IS OK: SAVE IT
00012700
MVC MEMNAME(8),BLANKS
00012800
BCTR R12,0
00012900
EX R12,MOVEMEM STORE MEMBER NAME FROM SYSIN CARD
00013000
LA R5,1(,R5) POINT TO CHAR AFTER COMMA
00013100
*
00013200
FINDA CLC INPUTOFT(8,R5),=C'NEWNAME=' IS THIS 'NEWNAME='?
00013300
BE OK2
00013400
B NOTFND
00013500
*
00013600
OK2 LA R5,8(,R5) YES: POINT TO NEWNAME
00013700
ST R5,STRTNEW SAVE START OF NEWNAME OFFSET
00013800
LR R8,R5 AND IN R8 FOR "EX R12,MOVENEWN"
00013900
*
00014000
FINDB CLI INPUTOFT(R5),C' ' LOOK FOR BLANK CHAR AFTER NEWNAME=
00014100
BE CHK2
00014200
BXLE R5,R6,FINDB NOT FOUND? SHIFT UP & TRY AGAIN
00014300
B NOTFND
00014400
*
00014500
CHK2 ST R5,ENDNEW FOUND: NOW CHECK NEWNAME LENGTH
00014600
LR R12,R5
00014700
S R12,STRTNEW ENDNEW - STRTNEW = NEWNAME LENGTH
00014800
BE NOTFND 0 LENGTH NOT ALLOWED
00014900
C R12,=F'9'
00015100
BNL NOTFND LENGTH > 8 NOT ALLOWED
00015200
*
00015300
STH R12,LENNEW OK: SAVE NEWNAME LENGTH
00015400
MVC NEWNAME(8),BLANKS
00015500
BCTR R12,0
00015600
EX R12,MOVENEWN STORE NEWNAME FROM SYSIN CARD
00015700
*
00015800
* AT THIS POINT, THE MEMBER AND NEWNAME HAVE BEEN CHECKED AS BEING
00015900
* AT LEAST 1 CHAR LONG AND AT MOST 8 CHARS LONG: OK
00016000
*
00016100
BOTHOK LA R9,14(,R9) UPDATE OFFSET
00016200
MVC NAMEOFT(8,R9),MEMNAME
00016300
LA R10,8(,R10) UPDATE OFFSET
00016400
MVC NEWNAMEOFT(8,R10),NEWNAME
00016500
*
00016600
DONEXT BCT R4,NEXT ALL OK: READ NEXT CARD
00016700
*
00016800
NOTFND B NEXT ¬OK: SCRAP THIS CARD: READ NEXT CARD
00016900
*
00017000
EOJ1 CLOSE (SYSIN,)
00017100
*
00017200
* UPDATE COUNT OF MEMBERS TO BE FETCHED, FOR BLDL MACRO
00017300
*
00017400
S R4,=F'64' HOW MANY VALID SYSN CARDS WERE READ?
00017500
LPR R4,R4
00017600
BE FINISH
00017700
STH R4,FF -> NO OF MEMBER ENTRIES FOR BLDL
00017800
*
00017900
* PREPARE TO READ PDS DIRECTORY
00018000
*
00018100
OPEN (PDS,(INPUT))
00018200
*
00018300
START NOP *
00018400
BLDL PDS,LISTMEM
00018500
CLOSE (PDS,)
00018600
*
00018700
* BLDL SHOULD NOW HAVE PULLED OUT THE TTR & OTHER INFO FOR EACH MEMBER.
00018800
* NOW ADD THE NEWNAMES.
00018900
*
00019000
* PREPARE TO ADD NEWNAMES TO PDS (PDSUPDAT) DIRECTORY
00019100
*
00019200
OPEN (PDSUPDAT,(OUTPUT),REPORTS,(OUTPUT))
00019300
LA R5,1 USE R5 AS COUNTER
00019400
LA R6,1 USE R6 AS INCREMENT TO R7
00019500
LR R7,R4 USE R7 AS BXLE UPPER LIMIT
00019600
LR R9,R11 FOR INDEXING MEMBER NAMES + BASE
00019700
LA R9,0(,R9) CLEAR TOP 8 BITS
00019800
S R9,=F'14'
00019900
LR R10,R11 FOR INDEXING NEWNAMES + BASE
00020000
LA R10,0(,R10) CLEAR TOP 8 BITS
00020100
S R10,=F'8'
00020200
*
00020300
* ADD NEWNAME ENTRIES FROM ACCEPTED SYSIN CARDS
00020400
*
00020500
ADDNEWNAME NOP * DO UNTIL ALL NEWNAMES ARE ADDED
00020600
LA R9,14(,R9) UPDATE INDEX
00020700
LA R10,8(,R10) UPDATE INDEX
00020800
CLI TTROFT+2(R9),X'00' WAS THE MEMBER FOUND?
00020900
BE SKIP NO: SKIP TO PROCESS NEXT NEWNAME
00021000
MVC MEMNAMOK(8),NAMEOFT(R9) YES: SET UP REPORT LINE
00021100
MVC MEMNAME(8),NAMEOFT(R9) + SET UP FIELDS FOR STOW
00021200
MVC NEWNAMOK(8),NEWNAMEOFT(R10) DITTO
00021300
MVC NEWNAME(8),NEWNAMEOFT(R10) + SET UP FIELDS FOR STOW
00021400
MVC NAMEOFT(8,R9),NEWNAMEOFT(R10) SET UP FOR STOW MACRO
00021500
STOW PDSUPDAT,MEMNAME,C
00021600
LTR R15,R15 MEMBER RENAMED OK?
00021700
BNE SKIP NO: SKIP TO PROCESS NEXT NEWNAME
00021800
WRITEREC YES: OUTPUT LINE OF REPORT
00021900
*
00022000
SKIP BXLE R5,R6,ADDNEWNAME PROCESS NEXT NEWNAME
00022100
*
00022200
EOJ CLOSE (PDSUPDAT,,REPORTS)
00022300
*
00022400
FINISH L R13,SAVEBLK+8 RESTORE R13 FROM SAVE ADDRESS AREA
00022500
LM R14,R12,12(R13) RESTORE REGISTERS
00022600
XR R15,R15 CLEAR RETURN CODE
00022700
BR R14 RETURN CONTROL TO OPERATING SYSTEM
00022800
*
00022900
**********************************************************************
00023000
******** END OF PROGRAM CODE PROPER **********************************
00023100
**********************************************************************
00023200
*
00023300
**********************************************************************
00023400
******** FILES *******************************************************
00023500
**********************************************************************
00023600
*
00023700
* DEFINE PDS (BPAM)
00023800
* N.B. SEE 'DATA ADMINISTRATION : MACRO REF' FOR DETAILS
00023900
*
00024000
SYSIN DCB BLKSIZE=80,
*00024100
DDNAME=SYSIN,
*00024200
DSORG=PS,
*00024300
EODAD=EOJ1, ADDRESS FOR BRANCHING, AT EOF
*00024400
RECFM=FB,
*00024500
MACRF=(GL) USING 'GET' AND 'LOCATE' MODE
00024600
*
00024700
REPORTS DCB BLKSIZE=80,
*00024800
DDNAME=REPORTS,
*00024900
DSORG=PS,
*00025000
MACRF=(PM) USING 'PUT' AND 'MOVE TRANSMITTAL'
00025100
*
00025200
PDS DCB BLKSIZE=256,
*00025300
DDNAME=PDS,
*00025400
DSORG=PO,
*00025500
EODAD=EOJ, ADDRESS FOR BRANCHING, AT EOF
*00025600
RECFM=VB, DIRECTORY ENTRIES ARE VARIABLE
*00025700
MACRF=(R) READ
00025800
*
00025900
PDSUPDAT DCB DDNAME=PDS,
*00026000
DSORG=PO,
*00026100
EODAD=EOJ, ADDRESS FOR BRANCHING, AT EOF
*00026200
MACRF=(R,W) READ + WRITE
00026300
*
00026400
**********************************************************************
00026500
******** DEFINE STORAGE **********************************************
00026600
**********************************************************************
00026700
*
00026800
* INPUT RECORDS
00026900
*
00027000
INPUT DS CL80
00027100
*
00027200
LISTMEM DS 0D
00027300
FF DC H'64' UP TO 64 SYSIN CARDS MAX
00027400
LL DC H'14' 14 BYTES PER FOLLOWING ENTRY
00027500
NAME DS CL8
00027600
TTR DS CL3
00027700
K DS CL1
00027800
Z DS CL1
00027900
C DS CL1
00028000
DS CL882
00028100
N_NAME DS CL8
00028200
DS CL504
00028300
OUTPUT DS 0C
00028400
DC CL5' '
00028500
NEWMSG DC C'NEWNAME='
00028600
NEWNAMOK DS CL8
00028700
DC C' : '
00028800
REPMSG DC C'SUCCESSFULLY PROCESSED FOR MEMBER = '
00028900
MEMNAMOK DS CL8
00029000
DC CL(80+OUTPUT-*)' '
00029100
LENMEM DS H
00029200
STRTMEM DS F
00029300
ENDMEM DS F
00029400
LENNEW DS H
00029500
STRTNEW DS F
00029600
ENDNEW DS F
00029700
MEMNAME DS CL8
00029800
NEWNAME DS CL8
00029900
*
00030000
**********************************************************************
00030100
******** DEFINE CONSTANTS FOR THIS PROGRAM ***************************
00030200
**********************************************************************
00030300
*
00030400
LTORG
00030500
*
00030600
BLANKS DC CL8' '
00030700
*
00030800
**********************************************************************
00030900
******** 'EXECUTE' INSTRUCTIONS **************************************
00031000
**********************************************************************
00031100
*
00031200
MOVEMEM MVC MEMNAME(0),INPUTOFT(R8)
00031300
MOVENEWN MVC NEWNAME(0),INPUTOFT(R8)
00031400
*
00031500
**********************************************************************
00031600
******** DEFINE SAVE AREA FOR THIS PROGRAM ***************************
00031700
**********************************************************************
00031800
*
00031900
SAVEBLK DC 18F'0' 18 FULLWORDS INITIALISED TO 0
00032000
*
00032100
**********************************************************************
00032200
******** THAT'S IT ***************************************************
00032300
**********************************************************************
00032400
*
00032500
END PDSRENMB SPECIFY ENTRY POINT
00033000
CP (retired sysprog)
Walt Farrell wrote:
On Tue, 14 Jun 2016 23:18:37 -0500, Paul Gilmartin <paulgboul...@aim.com> wrote:
On Wed, 15 Jun 2016 04:14:04 +0100, CM Poncelet wrote:
I would suggest writing some assembler code that invokes the BLDL macro
to read the PDS directory, ...
Does that work?
No, it doesn't. BLDL requires that you already know the member name.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN