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

Reply via email to