If it helps, this thing updates a PDS directory using STOW. It will need
some tweaking to update the USERDATA (check the PDS directory map).
Cheers, CP
 

MEMBER NAME  ALIAS
*
* THIS PROGRAM ALIASES ENTRIES IN A PARTITIONED DATASET.
* MEMBERS MAY HAVE FIXED OR VARIABLE LOGICAL RECORD LENGTH (FB OR VB).
* MEMBER NAME AND ALIAS MUST BE SUPPLIED VIA SYSIN CARD.
*
*
* FORMAT OF SYSIN CARD IS
*       'MEMBER=@@...@,ALIAS=@@...@ '
* WHERE '@@...@' REPRESENTS A 1 TO 8 CHAR VALID MEMBER/ALIAS NAME
* AND WHERE ANYTHING (INCLUDING COMMENTS) (EXCEPT MEMBER= //  /*) MAY
* PRECEDE THE 'MEMBER=' START OF CARD DATA
* AND WHERE THE END OF CARD DATA (AFTER ALIAS NAME) MUST BE A BLANK.
* NOTE THAT THE COMMA, AFTER THE MEMBER NAME, IS MANDATORY,
* EACH SEPARATE ALIAS REQUEST MUST BE ON A SEPARATE CARD
* AND THE CARDS ARE FIXED RECL=80 WITH DATA IN COLS 1 TO 72 INCLUSIVE,
* DECLARED VIA DDNAME SYSIN.
*
* MEMBER NAMES MUST BE IN ASCENDING ALPHABETICAL ORDER.
*
* INVALID SYSIN CARDS ARE IGNORED.
*
* ALIASES SUCCESSFULLY ADDED ARE LISTED UNDER DDNAME=REPORTS OUTPUT.
*
* CREATED: CHRIS PONCELET                            12/10/88
*
***********************************************************************
*
         PRINT  NOGEN
ALIASPDS CSECT                     START CONTROL SECTION
*
* PASSING  THE 'NEXT' LABEL AS A PARAMETER TO THE 'READREC' MACRO
*
R0       EQU   0                    REDEFINE REGISTERS
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
*
***********************************************************************
********************** MACROS *****************************************
*
         MACRO
&L       READREC &FILE
&L       GET   &FILE               READREC MACRO
         MVC   INPUT(80),0(R1)     MOVE FROM BUFFER TO INPUT AREA
         MEND
*
         MACRO
&L       WRITEREC
&L       PUT   REPORTS,OUTPUT      WRITEREC MACRO
         MEND
*
*********************** END OF MACROS *********************************
***********************************************************************
*
**********************************************************************
******* INITIAL PROCESSING *******************************************
**********************************************************************
*
* NOTE: SAVE ALL REGISTERS ON ENTRY, AT 18 FULLWORDS STARTING AT
*       ADDRESS GIVEN IN R13 - USING STORE MULTIPLE.
*       THEN USE R14 (SAVED, THAT IS) TO RETURN CONTROL AFTER EXECUTION
*       OF THIS PROGRAM (AFTER RELOADING USING LOAD MULTIPLE.)
*
BEGIN    STM   R14,R12,12(R13)     SAVE REGISTERS 14->12 TO OFFSET 12
         BALR  R11,R0              LOAD CURRENT LOCATION INTO R11
         USING *,R11,R3            DEFINE R11 + R3 AS BASE REGISTERS
NAMEOFT  EQU   NAME-*
TTROFT   EQU   TTR-*
ALIASOFT EQU   ALIAS-*
KOFT     EQU   K-*
COFT     EQU   C-*
INPUTOFT EQU   INPUT-*
         LA    R3,*-4+4096
         ST    R13,SAVER13         FREE REGISTER 13 BY SAVING
         LA    R13,SAVEBLK         LOAD MY SAVEAREA'S ADDRESS INTO R13
*
***********************************************************************
******** START OF PROGRAM CODE PROPER *********************************
***********************************************************************
*
         OPEN  (SYSIN,(INPUT))
         L     R4,=F'64'           FOR COUNTING ¬> 64 CARDS
         LR    R9,R11              FOR INDEXING MEMBER NAMES + BASE
         LA    R9,0(,R9)           CLEAR TOP 8 BITS
         S     R9,=F'14'
         LR    R10,R11             FOR INDEXING ALIAS NAMES + BASE
         LA    R10,0(,R10)         CLEAR TOP 8 BITS
         S     R10,=F'8'
*
* DO UNTIL THERE ARE NO MORE SYSIN RECORDS
*
NEXT     READREC SYSIN
         LR    R5,R11              USE R5 AS PSEUDO BASE REG
         LA    R5,0(,R5)           CLEAR TOP 8 BITS
         SR    R6,R6               USE R6 AS INDEX INCREMENT
         LA    R6,1(,R6)
         LR    R7,R11              USE R7 AS INDEX UPPER LIMIT
*
*                                  'MEMBER=' = 7
*                                  ',' = 1
*                                  'ALIAS=' =     6
*                                  <MEMBERNAME> = 1 MIN
*                                  <ALIASNAME> = 1 MIN
*                                  OFFSET = POSITION - 1
*                                  72-7-1-6-1-1-1=55
*
         LA    R7,55(,R7)          SYSIN CARD UP TO COL 72 MAX.
*
* FIND 'MEMBER=' STRING IN CURRENT SYSIN CARD.
*
FINDM    CLI   INPUTOFT(R5),C'M'   LOOK FOR CHAR 'M' AT CURRENT POS.
         BE    CHK1A
         BXLE  R5,R6,FINDM         IF NOT FOUND TRY NEXT POSITION UP
         B     NOTFND
CHK1A    CLC   INPUTOFT(7,R5),=C'MEMBER=' IS IT 'MEMBER='?
         BE    OK1
         BXLE  R5,R6,FINDM         NO: START AGAIN FROM NEXT POS. UP
         B     NOTFND
OK1      LA    R5,7(,R5)           YES: SHIFT UP TO READ NAME
         ST    R5,STRTMEM          SAVE START POSITION OF NAME
         LR    R8,R5               AND IN REG8 FOR EX R12,MOVEMEM
FINDC    CLI   INPUTOFT(R5),C','   LOOK FOR COMMA
         BE    CHK1B
         BXLE  R5,R6,FINDC         NOT FOUND? SHIFT UP & TRY AGAIN
         B     NOTFND
CHK1B    ST    R5,ENDMEM           FOUND: NOW CHECK MEMBER NAME
         LR    R12,R5
         S     R12,STRTMEM         ENDMEM - STRTMEM = MEMNAME LENGTH
         BE    NOTFND              0 LENGTH NOT ALLOWED
         C     R12,=F'9'
         BNL   NOTFND              LENGTH > 8 NOT ALLOWED
         STH   R12,LENMEM          MEMNAME LENGTH IS OK: SAVE IT
         MVC   MEMNAME(8),BLANKS
         BCTR  R12,0
         EX    R12,MOVEMEM         STORE MEMBER NAME FROM SYSIN CARD
         LA    R5,1(,R5)           POINT TO CHAR AFTER COMMA
FINDA    CLC   INPUTOFT(6,R5),=C'ALIAS=' IS THIS 'ALIAS='?
         BE    OK2
         B     NOTFND
OK2      LA    R5,6(,R5)           YES: POINT TO ALIAS NAME
         ST    R5,STRTALS          SAVE START OF ALIAS     NAME OFFSET
         LR    R8,R5               AND IN REG8 FOR EX R12,MOVEALS
FINDB    CLI   INPUTOFT(R5),C' '   LOOK FOR BLANK CHAR AFTER ALIAS=
         BE    CHK2
         BXLE  R5,R6,FINDB         NOT FOUND? SHIFT UP & TRY AGAIN
         B     NOTFND
CHK2     ST    R5,ENDALS           FOUND: NOW CHECK ALIASNAME LENGTH
         LR    R12,R5
         S     R12,STRTALS         ENDALS - STRTALS = ALSNAME LENGTH
         BE    NOTFND              0 LENGTH NOT ALLOWED
         C     R12,=F'9'
         BNL   NOTFND              LENGTH > 8 NOT ALLOWED
         STH   R12,LENALS          OK: SAVE ALIAS NAME LENGTH
         MVC   ALSNAME(8),BLANKS
         BCTR  R12,0
         EX    R12,MOVEALS         STORE ALIAS NAME FROM SYSIN CARD
*
         LA    R9,14(,R9)          UPDATE OFFSET
         MVC   NAMEOFT(8,R9),MEMNAME
         LA    R10,8(,R10)         UPDATE OFFSET
         MVC   ALIASOFT(8,R10),ALSNAME
DONEXT   BCT   R4,NEXT             ALL OK: READ NEXT CARD
NOTFND   B     NEXT                ¬OK: SCRAP THIS CARD: READ NEXT CARD
*
EOJ1     CLOSE (SYSIN,)
*
* UPDATE COUNT OF MEMBERS TO BE FETCHED, FOR BLDL MACRO
*
         S     R4,=F'64'           HOW MANY VALID SYSN CARDS WERE READ?
         LPR   R4,R4
         BE    FINISH
         STH   R4,FF               ->  NO OF MEMBER ENTRIES FOR BLDL
*
* PREPARE TO READ PDS DIRECTORY
*
         OPEN  (PDS,(INPUT))
*
START    NOP   *
         BLDL  PDS,LISTMEM
         CLOSE (PDS,)
*
* BLDL SHOULD NOW HAVE PULLED OUT THE TTR & OTHER INFO FOR EACH MEMBER.
* NOW ADD THE ALIASES.
*
* PREPARE TO ADD ALIASES TO PDS (PDSUPDAT) DIRECTORY
*
         OPEN  (PDSUPDAT,(OUTPUT),REPORTS,(OUTPUT))
         SR    R5,R5               USE R5 AS COUNTER
         LA    R5,1(,R5)
         SR    R6,R6               USE R6 AS INCREMENT TO R7
         LA    R6,1(,R6)
         LR    R7,R4               USE R7 AS BXLE UPPER LIMIT
         LR    R9,R11              FOR INDEXING MEMBER NAMES + BASE
         LA    R9,0(,R9)           CLEAR TOP 8 BITS
         S     R9,=F'14'
         LR    R10,R11             FOR INDEXING ALIAS NAMES + BASE
         LA    R10,0(,R10)         CLEAR TOP 8 BITS
         S     R10,=F'8'
*
* ADD ALIAS ENTRIES FROM ACCEPTED SYSIN CARDS
*
ADDALIAS NOP   *                   DO UNTIL ALL ALIASES HAVE BEEN ADDED
         LA    R9,14(,R9)          UPDATE INDEX
         LA    R10,8(,R10)         UPDATE INDEX
         CLI   TTROFT+2(R9),X'00'  WAS THE MEMBER FOUND?
         BE    SKIP                NO: SKIP TO PROCESS NEXT ALIAS
         MVC   MEMNAMOK(8),NAMEOFT(R9) YES: SET UP REPORT LINE
         MVC   ALSNAMOK(8),ALIASOFT(R10)
         MVC   NAMEOFT(8,R9),ALIASOFT(R10) SET UP FIELDS FOR STOW MACRO
         OI    COFT(R9),B'10000000' FLAG AS ALIAS
         NI    COFT(R9),B'11100000' NO USERDATA BECAUSE ONLY 12 BYTES
         MVC   KOFT(1,R9),COFT(R9)  UPDATE STOW 'C' FIELD
         STOW  PDSUPDAT,NAMEOFT(,R9),A
         LTR   R15,R15             ALIAS ADDED OK?
         BNE   SKIP                NO: SKIP TO PROCESS NEXT ALIAS
         WRITEREC                  YES: OUTPUT LINE OF REPORT
SKIP     BXLE  R5,R6,ADDALIAS      PROCESS NEXT ALIAS
*
EOJ      CLOSE (PDSUPDAT,,REPORTS)
*
FINISH   L     R13,SAVER13         RESTORE R13 FROM SAVE ADDRESS AREA
         LM    R14,R12,12(R13)     RESTORE REGISTERS
         SR    R15,R15             CLEAR RETURN CODE
         BR    R14                 RETURN CONTROL TO OPERATING SYSTEM
*
**********************************************************************
******** END OF PROGRAM CODE PROPER **********************************
**********************************************************************
*
**********************************************************************
******** FILES *******************************************************
**********************************************************************
*
*        DEFINE PDS (BPAM)
*        N.B. SEE 'DATA ADMINISTRATION : MACRO REF' FOR DETAILS
*
SYSIN    DCB   BLKSIZE=80,                                             *
               DDNAME=SYSIN,                                           *
               DSORG=PS,                                               *
               EODAD=EOJ1,         ADDRESS FOR BRANCHING, AT EOF       *
               RECFM=FB,                                               *
               MACRF=(GL)          USING 'GET' AND 'LOCATE' MODE
*
REPORTS  DCB   BLKSIZE=132,                                            *
               DDNAME=REPORTS,                                         *
               DSORG=PS,                                               *
               MACRF=(PM)          USING 'PUT' AND 'MOVE TRANSMITTAL'
*
PDS      DCB   BLKSIZE=256,                                            *
               DDNAME=PDS,                                             *
               DSORG=PO,                                               *
               EODAD=EOJ,          ADDRESS FOR BRANCHING, AT EOF       *
               RECFM=VB,           DIRECTORY ENTRIES ARE VARIABLE      *
               MACRF=(R)           READ
*
PDSUPDAT DCB   DDNAME=PDS,                                             *
               DSORG=PO,                                               *
               EODAD=EOJ,          ADDRESS FOR BRANCHING, AT EOF       *
               MACRF=(R,W)         READ + WRITE
*
**********************************************************************
******** DEFINE STORAGE **********************************************
**********************************************************************
*
* INPUT RECORDS
*
INPUT    DS    CL80
*
LISTMEM  DS    0D
FF       DC    H'64'               UP TO 64 SYSIN CARDS MAX
LL       DC    H'14'               14 BYTES PER FOLLOWING ENTRY
NAME     DS    CL8
TTR      DS    CL3
K        DS    CL1
Z        DS    CL1
C        DS    CL1
         DS    CL882
ALIAS    DS    CL8
         DS    CL504
OUTPUT   DS    0C
         DC    CL5' '
ALSMSG   DC    C'ALIAS='
ALSNAMOK DS    CL8
         DC    C'  :  '
REPMSG   DC    C'SUCCESSFULLY PROCESSED FOR MEMBER = '
MEMNAMOK DS    CL8
         DC    CL(132+OUTPUT-*)' '
LENMEM   DS    H
STRTMEM  DS    F
ENDMEM   DS    F
LENALS   DS    H
STRTALS  DS    F
ENDALS   DS    F
MEMNAME  DS    CL8
ALSNAME  DS    CL8
*
**********************************************************************
******** DEFINE CONSTANTS FOR THIS PROGRAM ***************************
**********************************************************************
*
         LTORG
*
BLANKS   DC    CL8' '
*
**********************************************************************
******** 'EXECUTE' INSTRUCTIONS **************************************
**********************************************************************
*
MOVEMEM  MVC   MEMNAME(0),INPUTOFT(R8)
MOVEALS  MVC   ALSNAME(0),INPUTOFT(R8)
*
**********************************************************************
******** DEFINE SAVE AREA FOR THIS PROGRAM ***************************
**********************************************************************
*
SAVEBLK  DC    18F'0'              18 FULLWORDS INITIALISED TO 0
SAVER13  DC    F'0'                1  FULLWORD FOR SAVING REG 13 CONTS
*
**********************************************************************
******** LOOK-UP TABLES **********************************************
**********************************************************************
*
SRCH1ST  DS    0D
S0       DC    XL16'000102030405060708090A0B0C0D0E0F'
S1       DC    XL16'101112131415161718191A1B1C1D1E1F'
S2       DC    XL16'202122232425262728292A2B2C2D2E2F'
S3       DC    XL16'303132333435363738393A3B3C3D3E3F'
S4       DC    XL16'404142434445464748494A4B4C4D4E4F'
S5       DC    XL16'505152535455565758595A005C5D5E5F'
S6       DC    XL16'606162636465666768696A6B6C6D6E6F'
S7       DC    XL16'707172737475767778797A00007D7E7F'
S8       DC    XL16'808182838485868788898A8B8C8D8E8F'
S9       DC    XL16'909192939495969798999A9B9C9D9E9F'
SA       DC    XL16'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'
SB       DC    XL16'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
SC       DC    XL16'C0000000000000000000CACBCCCDCECF'
SD       DC    XL16'D0000000000000000000DADBDCDDDEDF'
SE       DC    XL16'E0E10000000000000000EAEBECEDEEEF'
SF       DC    XL16'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
*
**********************************************************************
******** THAT'S IT ***************************************************
**********************************************************************
*
         END   BEGIN               START EXECUTION FROM BEGIN ONWARDS
 


On 07/07/2017 18:31, Walt Farrell wrote:
> On Fri, 7 Jul 2017 16:56:09 +0200, R.S. <r.skoru...@bremultibank.com.pl> 
> wrote:
>
>> W dniu 2017-07-07 o 15:29, Lizette Koehler pisze:
>>> As far as I know, the statistics have always worked that way.  That as long 
>>> as you had the ability to edit (change/alter/del/create) the PDS you could 
>>> use 3.5 to change the ID field to anything you like.
>> ...except the dates.
>> Sometimes I want to change the date (just to prepare "installation
>> package", no cheating).
>> Is there any method to change the dates?
>> I mean set the date to something like 1999-09-09, not just reset.
> That may require a program of your own that uses STOW.
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to