TBDISPL Value Select



TSO Programming, ISPF, SDF, SDSF and PDF, FTP, TCP/IP Concepts, SNA & SNA/IP etc...

TBDISPL Value Select

Postby eprasad629 » Thu Aug 06, 2009 9:50 pm

Hi,

Good Day!!!

I have designed a panel which reads an ISPF table and displays rows. I have provided command option in front of the displayed rows which will enable a user to enter an action.

Here I'm unable to get the row which user has opted for and I got struck up this point?

Could you please let me on how to proceed further?

In case if you require more information please let me know.

Many thanks in advance.
Thanks & Regards,

Praelay
--------------------------------
eprasad629
 
Posts: 34
Joined: Wed Jan 07, 2009 12:48 pm
Location: Bangalore
Has thanked: 0 time
Been thanked: 0 time

Re: TBDISPL Value Select

 

Re: TBDISPL Value Select

Postby expat » Fri Aug 07, 2009 12:17 pm

What is happening, or not happening as appears to be the case.

The user selects a row to process and nothing happens ?

Please show your table definition, and the selection processing code.
expat
 
Posts: 382
Joined: Sat Jun 09, 2007 3:21 pm
Has thanked: 0 time
Been thanked: 1 time

Re: TBDISPL Value Select

Postby eprasad629 » Fri Aug 07, 2009 12:52 pm

Hi Expat,

Thanks for replying.

Please find the code below,

/**** rexx  ****/                                                       
  "clr3270"                                                             
       trace R?                                                         
    ADDRESS "ISPEXEC"                                                   
    "LIBDEF ISPPLIB DATASET ID('PAJX.PLIB')"                         
    "LIBDEF ISPTLIB DATASET ID('PAJX.TLIB')"                         
                                                                       
  /** create a new table **/                                           
  "TBOpen ABUILD nowrite"                                               
                                                                       
  If rc=0 Then                                                         
  do                                                                   
     signal srt                                                         
  end                                                                   
  Else If rc=8 Then                                                     
  do                                                                   
     say "Table doesn't exists"                                         
     exit 0                                                             
  end                                                                   
  else if rc = 12 Then                                                 
  do                                                                   
     say "ENQ failed; table was in use by another",                     
         " user or the current user"                                   
     exit 0                                                             
  end                                                                   
  else if rc = 16 Then                                                 
  do                                                                   
     say  "Table allocation error"                                     
     exit 0                                                             
  end                                                                   
                                                                       
   srt:                                                                 
                                                                       
   do forever                                                           
     "tbdispl ABUILD panel(INSP#TAB)",                                 
         "AutoSel(No)"                                                 
                                                                       
     say 'Value of row ' row                                           
                                                                       
     if rc > 4 Then leave                                               
       do ztdsels                                                       
         "CONTROL DISPLAY SAVE"                                         
          select                                                       
            when action = "D" Then                                     
                 call del#mem                                           
            otherwise                                                   
                 nop                                                   
          end                            /* Select */                   
          "CONTROL DISPLAY RESTORE"                                     
          if ztdsels = 1 then,           /* no more rows to do */       
             ztdsels = 0                                               
          else                                                         
            "TBDISPL ABUILD"          /* next row */                   
       end /* ztdsels */                                               
     action = ''                                                       
   end                                                                 
                                                                       
  "TBClose ABUILD"   /* Saves the table onto the disk" */               
                                                                       
/*"TBClose ABUILD"*/                                                   
  exit 0                                                               


The panel has the following ZVARS defined in )MODEL
zpgname, zload, zcics and zdb2

When a user enters a option D (for delete) and hits enter, the control flows to the following code

            when action = "D" Then                                     
                 call del#mem                                           


However the variables zpgname, zload, zcics and zdb2 doesn't carry the corresponding row value. I need to capture the row selected a user for further processing

Please let me know if you require further information on this.

Many thanks in advance.
Thanks & Regards,

Praelay
--------------------------------
eprasad629
 
Posts: 34
Joined: Wed Jan 07, 2009 12:48 pm
Location: Bangalore
Has thanked: 0 time
Been thanked: 0 time

Re: TBDISPL Value Select

Postby expat » Fri Aug 07, 2009 1:12 pm

Ok, we all have our own coding methods, and this is the one that I prefer to use when playing with tables.

I build a variable into the table, usually O for operation, and use that in my processing code. This stores the required action code in the table and does not do anything until the user has hit PF3 to quit the table selection process. This allows for a review of what has been requested and also allows corrections to be made before processing. Let's face it, the option of not to delete a selected record sure beats deleting the record immediately without asking questions.

Basically our code is very similar, the initial panel display - if no records selected it bypasses the table process, if rows are selected the DO FOREVER loop happens until the user is satisfied with the options entered and only when they hit PF3 to exit the table displays does the program actually do the requested work.

I appreciate you have your own coding preferences and if the code below helps you ...........
"ISPEXEC TBDISPL  ENVLIST PANEL(TABLTEST)"
IF RC <> 8 THEN DO
  DO FOREVER
    DO WHILE ZTDSELS > 0
      UPPER O
      IF O = 'S' THEN DO
        "ISPEXEC TBPUT    ENVLIST"
      END
      ELSE IF O = 'U' THEN DO
        O = ' '
        "ISPEXEC TBPUT    ENVLIST"
      END
      "ISPEXEC TBDISPL  ENVLIST"
    END
    "ISPEXEC TBDISPL  ENVLIST"
    IF RC = 8 THEN LEAVE
  END
END 

Logic to process requested actions against the table goes here.                                         
expat
 
Posts: 382
Joined: Sat Jun 09, 2007 3:21 pm
Has thanked: 0 time
Been thanked: 1 time


Return to TSO & ISPF

 


  • Related topics
    Replies
    Views
    Last post