Hi
I am having a problem of the entries being shown on a panel from a ISPF
table sometimes showing multiple entries wrt actual entries in a file during
the first time of invoking the panel. I am reading from a file and
displaying in a panel using ISPF tables.If actually there are only 7 entries
sometime it displays around 16 entries or so.Some records get duplicated I
tried using TBVCLEAR etc to clear but still sometimes it shows duplicate
entries in the panel.Sometimes it is showing correctly.
I am using the TBDISPL service to display the table entries .
I am attaching the code for your reference.
thanks in advance.
Sabarish
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html
/**REXX***/
MEDSNHLQ='SKANNON.UT753SP'
MYEXEC=MEDSNHLQ||'.TEST.EXEC'
'ISPEXEC LIBDEF ISPPLIB DATASET ID('''MYEXEC''')'
ADDRESS TSO
"ISPEXEC TBCREATE MAXTB NAMES(T0 T1 T2 ) "|| ,
",NOWRITE, SHARE "
INSEQ = "'"||SKANNON.NR.TEST.BLDLST||"'"
SEL = ''
CALL POP_TBL
SAY 'BEFORE TBTOP'
'ISPEXEC TBTOP MAXTB '
DO WHILE ENDRC <= 4
' ISPEXEC TBVCLEAR MAXTB'
CALL TBDISPL_BLDDTL
/*'ISPEXEC TBEND MAXTB ' */
SAY 'BEFORE ZTDSEL'
IF ZTDSEL=0 | RC>4 THEN
DO
ENDRC=RC
say 'NO BUILD SELECTED'
' ISPEXEC TBVCLEAR MAXTB'
'ISPEXEC TBEND MAXTB '
'ISPEXEC DISPLAY PANEL(SBLBDSP)'
END
ELSE IF T0 = 'S' THEN
DO
SEL = 'X'
CALL BLD_MEMLIST
IF ZTDSEL=0 | RC>4 THEN
DO
ENDRC=RC
'ISPEXEC TBEND MAXTB '
END
END
ELSE IF T0 = 'A' THEN
DO
SEL = 'X'
SAY 'BEFORE INSRT'
CALL INSRT_REC
ENDRC = 8
END
ELSE IF T0 = 'D' THEN
DO
"ISPEXEC TBCREATE XTB1 NAMES(T0 T1 T2),NOWRITE, SHARE"
ROWCNT2=ZTDSELS
DO IX1=1 TO ROWCNT2
VTBA1.IX1.1=T0
VTBA1.IX1.2=T1
VTBA1.IX1.3=T2
'ISPEXEC CONTROL NONDISPL'
END
DO IX1=1 TO ROWCNT2
OPTTYPE=VTBA.IX1.1
BUINAM1 =VTBA.IX1.2
END
CALL DLT_REC
END
END
IF SEL = 'X' THEN
DO
SAY 'BEFORE POP'
CALL POP_TBL
SAY 'AFTER POP_TBL'
CALL TBDISPL_BLDDTL
, 'ISPEXEC DISPLAY PANEL(SBLBDSP)'
, END
,RETURN
,
,TBDISPL_BLDDTL:
, SAY 'WITHIN DISPL'
,
, 'ISPEXEC TBDISPL MAXTB PANEL(SBLBDSP)'
, SAY 'AFTER TBDISPL'
,
,RETURN
,
,
,TBADD_BLDDTL:
,
, "ISPEXEC TBADD MAXTB"
,
,RETURN
BLD_MEMLIST:
/*CALL THE REXX ROUTINE FOR COPYING THE SQLSCRIPT AND CHANGING TBLOWNER
THEN CALL THE ROUTINE FOR BRINGING UP THE SQL JOB'
*/
SAY 'WITHIN BLD_MEMLIST'
SAY 'T0:' T0
SAY 'T1:' T1
SAY 'T2:' T2
MYDSNHLQ = DSNHL
TBOWNER = TBOWN
SAY 'High level: ' MYDSNHLQ
SAY 'TB Owner : ' TBOWNER
IF MYDSNHLQ = '' | TBOWNER = '' THEN
DO
SAY 'DSNHLQ and TBOWNER cannot be empty'
RETURN
END
'ISPEXEC VPUT (MYDSNHLQ)'
'ISPEXEC VPUT (TBOWNER)'
IF ZTDSELS = 0 THEN
DO
SAY 'NO BUILD SELECTED'
'ISPEXEC DISPLAY PANEL(SBLBDSP)'
END
IF ZTDSELS > 1 THEN
DO
SAY 'ONLY ONE CAN BE SELECTED'
'ISPEXEC DISPLAY PANEL(SBLBDSP)'
END
"ISPEXEC TBCREATE XTB NAMES(T0 T1 T2),NOWRITE, SHARE"
ROWCNT=ZTDSELS
DO IX=1 TO ROWCNT
VTBA.IX.1=T0
VTBA.IX.2=T1
VTBA.IX.3=T2
'ISPEXEC CONTROL NONDISPL'
'ISPEXEC TBDISPL MAXTB'
END
DO IX=1 TO ROWCNT
OPTTYPE=VTBA.IX.1
BUINAM =VTBA.IX.2
END
ADDRESS ISPEXEC
'ISPEXEC VPUT (BUINAM)'
CALL BDSQCOPY
CALL SBLJBBDS
RETURN
INSRT_REC:
NBLD = SUBSTR(T1,1,6)||SUBSTR(T2,1,8)
SAY 'NBLD' NBLD
"ALLOC FI(INSEQ) DA("||INSEQ||") MOD"
push NBLD
"EXECIO 1 DISKW INSEQ"
'EXECIO 0 DISKW INSEQ (FINIS '
'FREE FI(INSEQ)'
RETURN
DLT_REC:
SAY 'WITHIN DLT_REC'
"ALLOC FI(INSEQ) DA("||INSEQ||") OLD"
LCTR=0
DO WHILE EOF=0
LCTR = LCTR + 1
"EXECIO 1 DISKR INSEQ "
EOF=RC
PULL LINE1
IF BUINAM1 = SUBSTR(LINE1,1,6) THEN
LEAVE
ELSE
ITERATE
END
"EXECIO 1 DISKRU INSEQ "
PULL LINE
NBLD1 = SUBSTR(T1,1,6)||SUBSTR(T2,1,8)||'D'
PUSH NBLD1
"EXECIO 1 DISKW INSEQ "
"EXECIO 1 DISKW INSEQ (FINIS "
"FREE F(INSEQ)"
RETURN
POP_TBL:
DROP X.
TRKLINE = ''
"ALLOC FI(INSEQ) DA("||INSEQ||") SHR REUS"
'EXECIO 1 DISKR INSEQ(STEM X. '
EOF=RC
/*' ISPEXEC TBVCLEAR MAXTB'*/
DO WHILE EOF=0
SAY 'WITHIN LOOP'
PARSE VAR X.1 TRKLINE
TRKLINE=STRIP(TRKLINE)
T0='_'
T1=SUBSTR(TRKLINE,1,6)
T2=SUBSTR(TRKLINE,7,8)
CALL TBADD_BLDDTL
"EXECIO 1 DISKR INSEQ (STEM X."
EOF=RC
END
'EXECIO 0 DISKW INSEQ (FINIS '
'FREE FI(INSEQ)'
RETURN