Mainframe Utility: DUMPTABL

Return to Mainframe Utilities Page

Module


PROC 1 TABLE TLIB() DEBUG
ISPEXEC CONTROL ERRORS RETURN
IF &DEBUG = DEBUG THEN +
    CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ASIS
ELSE +
    CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS
IF &TABLE = HELP THEN GOTO HELPSEC
/**********************************************************************
/* CLIST : DUMPTABL                                                   *
/* AUTHOR : DAVE LEIGH                                                *
/* DATE : 7-6-90                                                      *
/* FUNCTION : THIS CLIST DUMPS THE CONTENTS OF ISPF TABLES INTO 2     *
/*            FILES.  THE FIRST IS A FLAT FILE.  THE SECOND IS AN     *
/*            EXECUTABLE CLIST WHICH, WHEN EXECUTED, WILL "SELF-LOAD" *
/*            THE TABLE.                                              *
/**********************************************************************

IF &STR(&TLIB) >      THEN +
    DO
        ISPEXEC LIBDEF ISPTLIB DATASET ID('&TLIB') UNCOND
        SET LIBCC = &LASTCC
        IF &LIBCC > 0 THEN +
            DO
                SET ZEDLMSG = &STR(*** RC = &LIBCC FOR +
                                   LIBDEF OF &TLIB ***)
                ISPEXEC SETMSG MSG(UTLZ001)
                EXIT
            END
    END

SET RP = &STR())
SET PLUS = &STR(+)
/*** ATTEMPT TO OPEN THE TABLE THE USER PASSED AS INPUT ***/
ISPEXEC TBOPEN &TABLE NOWRITE
SET SAVECC = &LASTCC
IF &SAVECC > 0 THEN +
    DO
        SET ZEDLMSG = &STR(*** RC = &SAVECC TRYING TO OPEN &TABLE ***)
        IF &SAVECC = 12 THEN GOTO KEEPON
/*          DO
/*              ISPEXEC TBSTATS &TABLE STATUS1(S1) STATUS2(S2)
/*              IF &S1 = 1 AND &S2 = 4 THEN SET CLOSE = NO
/*              ELSE +
/*                  DO
/*                      ISPEXEC SETMSG MSG(UTLZ001)
/*                      EXIT
/*                  END
/*          END
        ELSE +
            DO
                ISPEXEC SETMSG MSG(UTLZ001)
                EXIT
            END
    END

/*** GET THE # AND NAME OF THE FIELDS IN THE TABLE AND # OF ROWS ***/
KEEPON: +
ISPEXEC TBQUERY &TABLE KEYS(TKEYS) NAMES(TNAMES) KEYNUM(X) NAMENUM(Y) +
                       ROWNUM(NUMROWS)
IF &STR(&TKEYS) >    THEN +
    DO
        SET A = &LENGTH(&STR(&TKEYS))
        SET A = &A - 1
        SET SYSDVAL = &SUBSTR(2:&A,&STR(&TKEYS))
    END
IF &STR(&TNAMES) >    THEN +
    DO
        SET A = &LENGTH(&STR(&TNAMES))
        SET A = &A - 1
        IF &STR(&SYSDVAL) >     THEN +
            SET SYSDVAL = &STR(&SYSDVAL &SUBSTR(2:&A,&STR(&TNAMES)))
        ELSE +
            SET SYSDVAL = &SUBSTR(2:&A,&STR(&TNAMES))
    END
READDVAL F1  F2  F3  F4  F5  F6  F7  F8  F9  F10 +
         F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 +
         F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 +
         F31 F32 F33 F34 F35 F36 F37 F38 F39 F40 +
         F41 F42 F43 F44 F45 F46 F47 F48 F49 F50 +
         F51 F52 F53 F54 F55 F56 F57 F58 F59 F60 +
         F61 F62 F63 F64 F65 F66 F67 F68 F69 F70 +
         F71 F72 F73 F74 F75 F76 F77 F78 F79 F80 +
         F81 F82 F83 F84 F85 F86 F87 F88 F89 F90 +
         F91 F92 F93 F94 F95 F96 F97 F98 F99 F100

SET NUMFLDS = &X + &Y

CLEAR
WRITE
WRITE *** DETERMINING LRECL OF LONGEST TABLE ROW FOR "&TABLE" ***
ISPEXEC TBTOP &TABLE
ISPEXEC TBSKIP &TABLE

DO WHILE &LASTCC = 0
    SET X = 0
    DO WHILE &X < &NUMFLDS
        ERROR DO
            RETURN
        END
        SET X = &X + 1
        SET Y = &SYSNSUB(2,&&F&X)
        SET Y = &LENGTH(&SYSNSUB(3,&&&Y))
        SET Z = &STR(&SYSNSUB(2,&&L&X))
        IF &Y > &Z THEN SET L&X = &Y
        ERROR OFF
    END
    ISPEXEC TBSKIP &TABLE
END

/*** CALC THE LRECL FROM THE INDIVIDUAL FIELD LENGTHS ***/
SET X = 0
SET LRECL = 0

DO WHILE &X < &NUMFLDS
    SET X = &X + 1
    SET Y = &STR(&SYSNSUB(2,&&L&X))
    IF &Y = 0 THEN SET Y = 1
    SET LRECL = &LRECL + &Y
END

/*** DETERMINE PRIMARY, SECONDARY SPACE NEEDED TO HOLD THE FLAT FILE ***/
ISPEXEC SELECT CMD(%BLKSIZE &LRECL &NUMROWS DEVICE(3380) BATCH)
ISPEXEC VGET (BLKSIZE TRKSREQ) SHARED
SET X = &EVAL(&TRKSREQ / 10)
IF &X < 1 THEN SET X = 1

/*** ALLOCATE THE OUTPUT FLAT FILE ***/
DELETE '&SYSUID..TEMP.&TABLE..FLAT'
FREE DDNAME(FLATFILE)
ALLOC DD(FLATFILE) DSN('&SYSUID..TEMP.&TABLE..FLAT') +
      NEW CATALOG +
      UNIT(SYSDA) VOLUME(WRK$$$) +
      SPACE(&TRKSREQ,&X) TRACKS RELEASE +
      RECFM(F B) LRECL(&LRECL) BLKSIZE(&BLKSIZE) DSORG(PS)

/*** DETERMINE PRIMARY, SECONDARY SPACE NEEDED TO HOLD THE LOAD FILE ***/
ISPEXEC SELECT CMD(%BLKSIZE 255 &EVAL(&NUMROWS * &NUMFLDS + 500) +
                   DEVICE(3380) BATCH)
ISPEXEC VGET (BLKSIZE TRKSREQ) SHARED
SET X = &EVAL(&TRKSREQ / 10)
IF &X < 1 THEN SET X = 1

/*** ALLOCATE THE OUTPUT LOAD FILE ***/
DELETE '&SYSUID..TEMP.&TABLE..LOAD'
FREE DDNAME(LOADFILE)
ALLOC DD(LOADFILE) DSN('&SYSUID..TEMP.&TABLE..LOAD') +
      NEW CATALOG +
      UNIT(SYSDA) VOLUME(WRK$$$) +
      SPACE(&TRKSREQ,&X) TRACKS RELEASE +
      RECFM(F B) LRECL(255) BLKSIZE(&BLKSIZE) DSORG(PS)

/*** CREATE A "SUFFIX" SPACE VARIABLE = TO THE LRECL LENGTH ***/
SET SPACE = &STR( )
SET X = 0

DO WHILE &X < &LRECL
    SET X = &X + 1
    SET SPACE = &STR( &SPACE)
END

WRITE
WRITE *** LOADING BOTH THE "FLAT" FILE AND THE "LOAD" FILE ***
/*** PUT BEGINNING CLIST LINES IN THE LOAD FILE ***
OPENFILE LOADFILE OUTPUT
SET LOADFILE = +
&NRSTR(PROC 0 TABLE(&TABLE)                               )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(ISPEXEC VGET (DBGSWTCH) PROFILE                    )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&DBGSWTCH = &STR(ON) THEN +                    )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ASIS  )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(ELSE +                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE *********************************************)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * THIS CLIST LOADS A TABLE THAT WAS UNLOADED )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * ON &SYSDATE AT &SYSTIME BY THE NAME OF     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * "&TABLE".  DEFAULT EXECUTION OF THIS       )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * CLIST WILL APPEND "&TABLE" WITH THE ROWS   )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * WHICH WERE PREVIOUSLY UNLOADED.  YOU MUST  )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * SPECIFY FULLY QUALIFIED DATASET NAME       )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * WHICH IS THE ISPF TABLE LIBRARY INTO WHICH )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * "&TABLE" IS TO BE STORED.  YOU MAY ALSO    )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * RELOAD "&TABLE" INTO A DIFFERENT TABLE     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * NAME.  YOU MAY ALSO SPECIFY WHETHER YOU    )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * WOULD LIKE TO "CREATE", "REPLACE", OR      )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * "APPEND" A GIVEN TABLE.  SUCCESSFUL        )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE * APPENDING ASSUMES "LIKE-NAMED" FIELDS.     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE *********************************************)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITE                                              )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITENR ENTER TABLE LIBRARY NAME HERE ==>          )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(READ TLIB                                          )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&TLIB =      THEN +                            )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    DO                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        SET ZEDLMSG = &STR(&&)STR(*** NO TABLE LIBRARY &PLUS
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(           ENTERED *** NO PROCESSING PERFORMED ***&RP)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        ISPEXEC SETMSG MSG(UTLZ001)                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        EXIT                                       )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    END                                            )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(SET TLIB = &&STR(&&SYSCAPS(&&TLIB))                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(ISPEXEC LIBDEF ISPTABL                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(ISPEXEC LIBDEF ISPTABL DATASET ID('&&TLIB')        )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(SET SAVECC = &&LASTCC                              )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&SAVECC > 0 THEN +                              )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    DO                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        SET ZEDLMSG = &STR(&&)STR(*** "ISPTABL LIBDEF" &PLUS
PUTFILE LOADFILE
SET LOADFILE = +
&STR(           OF "&&TLIB" FAILED WITH RC = &&SAVECC ***&RP)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        ISPEXEC SETMSG MSG(UTLZ001)                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        EXIT                                       )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    END                                            )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITENR ENTER NEW TABLE NAME HERE, OR PRESS +      )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(         TO USE "&TABLE" ==>                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(READ XTABLE                                        )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&XTABLE >       THEN SET TABLE = &&XTABLE        )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(SET ACTION = APPEND                                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(WRITENR ENTER (C)REATE, OR (R)EPLACE.  JUST PRESS +)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(         TO (A)PPEND ==>                    )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(READ XACTION                                       )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&XACTION >      THEN SET ACTION = &&SYSCAPS(&&XACTION))
PUTFILE LOADFILE
SET LOADFILE = +
&STR(SET ACTION = &&SUBSTR(1:1,&&ACTION)                  )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&ACTION ¬= A AND +                              )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(   &&ACTION ¬= C AND +                              )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(   &&ACTION ¬= R THEN +                             )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    DO                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        SET ZEDLMSG = &STR(&&)STR(*** ACTION MUST BE &PLUS
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(           (A)PPEND, (C)REATE, OR (R)EPLACE ***&RP)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        ISPEXEC SETMSG MSG(UTLZ001)                )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(        EXIT                                       )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    END                                            )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&ACTION = R THEN +                              )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    DO                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        ISPEXEC TBERASE &&TABLE                     )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        SET SAVECC = &&LASTCC                       )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        IF &&SAVECC = 8 THEN +                      )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(            WRITE *** "&&TABLE" DOES NOT EXIST IN + )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(                  "&&TLIB" *** CONTINUING ***       )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        IF &&SAVECC = 12 THEN +                     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(            DO                                     )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(                SET ZEDLMSG = &STR(&&)STR(*** "&&TABLE" &PLUS
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                   IN USE, CANNOT REPLACE IT ***&RP)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                ISPEXEC SETMSG MSG(UTLZ001)        )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                ISPEXEC LIBDEF ISPTABL             )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                EXIT                               )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(            END                                    )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    END                                            )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(IF &&ACTION = R OR &&ACTION = C THEN                 )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    DO                                             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        ISPEXEC TBCREATE &&TABLE +                  )
PUTFILE LOADFILE
SET X = 0
SET PLS = &STR(+)
SET NME = &STR(NAMES)
SET NLP = &STR((
SET NRP =
SET KYS = &STR(KEYS)
SET KLP = &STR((
SET KRP =
DO WHILE &X < &NUMFLDS
    SET X = &X + 1
    SET Y = &SYSNSUB(2,&&F&X)
    IF &SYSINDEX(&Y,&STR(&TNAMES)) > 0 THEN +
        DO
            SET NAMESWITCH = ON
            IF &X = 1 THEN +
                DO

                    SET LOADFILE = +
                        &NRSTR(                         KEYS() &PLS)
                    PUTFILE LOADFILE
                END
        END
    IF &NAMESWITCH = ON THEN +
        DO
            IF &X = &NUMFLDS THEN SET NRP = &STR())
            SET LOADFILE = +
                &NRSTR(                         &NME&NLP&Y&NRP &PLS)
            SET NME = &STR(     )
            SET NLP = &STR( )
        END
    ELSE +
        DO
            SET Q = &X + 1
            SET Q = &SYSNSUB(2,&&F&Q)
            IF &SYSINDEX(&Q,&STR(&TKEYS)) = 0 THEN SET KRP = &STR())
            SET LOADFILE = +
                &NRSTR(                         &KYS&KLP&Y&KRP &PLS)
            SET KYS = &STR(    )
            SET KLP = &STR( )
        END
    PUTFILE LOADFILE
END
SET LOADFILE = +
&NRSTR(                         LIBRARY(ISPTABL) &PLS     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                         WRITE                     )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        SET SAVECC = &&LASTCC                       )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(        IF &&SAVECC > 4 THEN &PLS                   )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(            DO                                     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                ISPEXEC LIBDEF ISPTABL             )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(                SET ZEDLMSG = &STR(&&)STR(*** COULD NOT &PLS)
PUTFILE LOADFILE
SET LOADFILE = +
&STR(                   CREATE A NEW "&&TABLE". &PLS     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                   "TBCREATE" FAILED W/RC = &PLS   )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(                   &&SAVECC ***&RP)
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                ISPEXEC SETMSG MSG(UTLZ001)        )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(                EXIT                               )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(            END                                    )


PUTFILE LOADFILE
SET LOADFILE = +
&STR(        ISPEXEC TBCLOSE &&TABLE                     )
PUTFILE LOADFILE
SET LOADFILE = +
&NRSTR(    END                                            )
PUTFILE LOADFILE
SET LOADFILE = +
&STR(ISPEXEC TBOPEN &&TABLE WRITE)
PUTFILE LOADFILE

OPENFILE FLATFILE OUTPUT
SET FLATFILE = &STR(&SPACE)
ISPEXEC TBTOP &TABLE
ISPEXEC TBVCLEAR &TABLE
SET WRITESWITCH = ON
ISPEXEC TBSKIP &TABLE

WRITE
WRITE *** THIS IS THE LAYOUT FOR "&SYSUID..TEMP.&TABLE..FLATFILE" ***
WRITE *** !!! SCREEN PRINT THIS !!! ***
SET RWS = 0
DO WHILE &LASTCC = 0
    SET RWS = &RWS + 1
    SET X = 0
    SET A = 0
    DO WHILE &X < &NUMFLDS
        SET X = &X + 1
        SET Y = &STR(&SYSNSUB(2,&&L&X))
        IF &Y = 0 THEN +
            DO
                SET Y = 1
                SET FFLD = &STR( )
                SET LFLD = &STR( )
                IF &WRITESWITCH = ON THEN +
                    WRITE NOTE : FIELD "&SYSNSUB(2,&&F&X)" HAD NO +
                          NON-NULL VALUES...SUBSTITUTING 1 SPACE
            END
        ELSE +
            DO
ERROR DO
    SET ERRCC = &LASTCC
    WRITE *** ERR001 ERROR CC: &ERRCC PROCESSING RECORD #&RWS ***
    WRITE &STR(*** FIELD 1 NAME = "&F1")
    WRITE &STR(*** FIELD 1 VALUE = "&SYSNSUB(3,&&&F1)")
    WRITE &STR(*** FIELD IN ERROR = "&SYSNSUB(2,&&F&X)" ***)+
          &STR( IT WILL BE SET TO "?")
    SET ERRF = &STR(&SYSNSUB(2,&&F&X))
    SET &&ERRF = &STR(?)
    RETURN
END
                SET LFLD = &STR(&&)&STR(&SYSNSUB(2,&&F&X))
                SET LFLD = &STR(&LFLD)
                IF &STR(&LFLD) =     THEN SET LFLD = &STR( )
                SET FFLD = &STR(&&)&STR(&SYSNSUB(2,&&F&X))&STR(&SPACE)
                SET FFLD = &SUBSTR(1:&Y,&STR(&FFLD))
ERROR OFF
            END
ERROR DO
    SET ERRCC = &LASTCC
    WRITE *** ERR002 ERROR CC: &ERRCC PROCESSING RECORD #&RWS ***
    WRITE &STR(*** FIELD 1 NAME = "&F1")
    WRITE &STR(*** FIELD 1 VALUE = "&SYSNSUB(3,&&&F1)")
    WRITE &STR(*** FIELD IN ERROR = "&SYSNSUB(2,&&F&X)" ***)+
          &STR( IT WILL BE SET TO "?")
    SET ERRF = &STR(&SYSNSUB(2,&&F&X))
    SET &&ERRF = &STR(?)
    RETURN
END
        SET B = &Y + 1
        SET LOADFILE = +
            &STR(SET &SYSNSUB(2,&&F&X) = +
            &STR(&&STR(&&SYSNSUB(0,&STR(&SYSNSUB(1,&LFLD)))))
        PUTFILE LOADFILE
        IF &A = 0 THEN +
            SET FLATFILE = &STR(&FFLD)+
                           &SUBSTR(&B:&LRECL,&STR(&FLATFILE))
        ELSE +
            SET FLATFILE = &SUBSTR(1:&A,&STR(&FLATFILE))+
                           &STR(&FFLD)+
                           &SUBSTR(&B:&LRECL,&STR(&FLATFILE))
ERROR OFF
        IF &WRITESWITCH = ON THEN +
            WRITE FIELD : "&SYSNSUB(2,&&F&X)" IS AT POSITION +
                  &EVAL(&A + 1) FOR A LENGTH OF &Y
        SET A = &A + &Y
    END
    SET WRITESWITCH = OFF
    SET LOADFILE = &STR(ISPEXEC TBADD &&TABLE)
    PUTFILE LOADFILE
    PUTFILE FLATFILE
    IF &EVAL(&RWS//10) = 0 THEN +
        DO
            SET LOADFILE = &STR(WRITE &RWS ROWS LOADED INTO &&TABLE)
            PUTFILE LOADFILE
            WRITE &STR(&RWS ROWS DUMPED FOR TABLE &TABLE)
        END
    ISPEXEC TBSKIP &TABLE
END

SET LOADFILE = &STR(ISPEXEC TBCLOSE &&TABLE)
PUTFILE LOADFILE
/* SET LOADFILE = &STR(ISPEXEC LIBDEF ISPTABL)
/* PUTFILE LOADFILE

FINAL: +
CLOSFILE LOADFILE
FREE DDNAME(LOADFILE)
CLOSFILE FLATFILE
FREE DDNAME(FLATFILE)
FREE ATTRLIST(ATTRIB1)

IF &CLOSE ¬= NO THEN ISPEXEC TBEND &TABLE
IF &STR(&TLIB) >      THEN ISPEXEC LIBDEF ISPTLIB
ISPEXEC BROWSE DATASET('&SYSUID..TEMP.&TABLE..FLAT')

EXIT

HELPSEC: +                                                              02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL)                             02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR XXXXXXXX UTILITY +            02490000
                   *** NO PROCESSING PERFORMED ***)                     02490000
ISPEXEC SETMSG MSG(UTLZ000)                                             02490000
EXIT
            


Documentation


 DUMPTABL allows you to specify an ISPF table name which is currently in the
 ISPTLIB concatenation and it will automatically create a flat file containing
 all of the records in the table in a consistant record layout.  It also creates
 a CLIST which, when run will re-load the table.  The flatfile could also
 subsequently be used as input to the ISPFTABL utility to load a table.
            


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.