Page 1 of 1

ISPF Panel Symbols

PostPosted: Wed Jan 21, 2015 7:55 pm
by deucalion0
Hello everyone,

On and off for the past month or so I have been trying to understand the cod ein the IPF panels on our systems. I have almost given up trying to understand how the symbols work, what they resolve to and how they get their value.

I have Googled and also went through a lot of this IBM guidehttp://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ISPZDG30/CCONTENTS?DT=20040720211441, but still no luck.

I will post a bit of code which I am struggling with:

PROC                                                                         
 IF (&CMDI ¬= &Z)                                                             
     &CMDI  = 'PGM(DGTFMD01) PARM(&ZCMD) NEWAPPL(DGT) NOCHECK'               
&ZSEL = TRANS( TRUNC (&ZCMD,'.')                                             
     A,'&CMDA'                     
    AB,'&CMDAB'                 
    AV,'&CMDAV'                 
    AM,'&CMDAM'               
    AP,'&CMDAP'                 
     B,'&CMDB'                   
     C,'&CMDC'                   


The above is for a panel on our system. When I enter C I am taken to another panel, I do not understand what exactly is happening in the code, some of those options also invoke programs too, so what i want to know is, is &CMD stored somewhere in the system with a default value? If so where and how can I find it.

Any assistance or pointers with this would be very appreciated, no one at my site can figure this out.

Many thanks!!!

Re: ISPF Panel Symbols

PostPosted: Wed Jan 21, 2015 8:07 pm
by enrico-sorichetti
The above is for a panel on our system.

the fragment posted is not enough to explain

most probably somewhere in Your panel &CMDC is defined to a command and its parameters

Re: ISPF Panel Symbols

PostPosted: Wed Jan 21, 2015 8:13 pm
by deucalion0
Thanks Enrico, i will get the full panel up, edited of course to remove any site info, and hopefully that will be enough. Thank you!

Re: ISPF Panel Symbols

PostPosted: Thu Jan 22, 2015 4:16 pm
by deucalion0
Hey there,

below is the complete panel code minus the list of applications, I have listed up to E just to show how it is done, the list is quite big.

But basically after weeks of digging i cannot for the life of me figure out how when I say enter A, it brings up another panel for that product with another list of options. I would love to know where how entering A resolves to the next panel being loaded.

I am currently reading through this manual right now:
http://publibz.boulder.ibm.com/epubs/pdf/isp2dg00.pdf


I would appreciate any help at all on this as I am absolutely stuck. Thank you!!

)ATTR                                                                             
   % TYPE(TEXT)  COLOR(WHITE)      /* intens(high)  */                         
   ¯ TYPE(TEXT)  COLOR(WHITE)      /* intens(high)  */                         
   + TYPE(TEXT)  COLOR(BLUE)       /* intens(low)   */                         
   ! TYPE(TEXT)  COLOR(BLUE)       /* intens(low)   */                         
   _ TYPE(INPUT) COLOR(RED)        /* intens(high)  */                         
   @  AREA(DYNAMIC) EXTEND(OFF) SCROLL(OFF)                                     
   # TYPE(DATAOUT) COLOR(WHITE)    /* intens(high)  */                         
   $ TYPE(DATAOUT) COLOR(BLUE)     /* intens(low)   */                         
   ¬ AREA(SCRL)              /* allow scrollable display  */           
)BODY EXPAND(\\)                                                               
%-\-\-   Applications Menu   -\-\-                               
%OPTION ===>_ZCMD                                                               
+                                                                               
¬SAREA                                                                     ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
¬                                                                              ¬
+                                                                               
%+Enter%END+to Exit;%HELP+for descriptions of above applications.               
+                                                                               
)AREA SAREA                                                                     
@REQ1              @@REQ16             @@OPT1              @@OPT16             @
@REQ2              @@REQ17             @@OPT2              @@OPT17             @
@REQ3              @@REQ18             @@OPT3              @@OPT18             @
@REQ4              @@REQ19             @@OPT4              @@OPT19             @
@REQ5              @@REQ20             @@OPT5              @@OPT20             @
@REQ6              @@REQ21             @@OPT6              @@OPT21             @
@REQ7              @@REQ22             @@OPT7              @@OPT22             @
@REQ8              @@REQ23             @@OPT8              @@OPT23             @
@REQ9              @@REQ24             @@OPT9              @@OPT24             @
@REQ10             @@REQ25             @@OPT10             @@OPT25             @
@REQ11             @@REQ26             @@OPT11             @@OPT26             @
@REQ12             @@REQ27             @@OPT12             @@OPT27             @
@REQ13             @@REQ28             @@OPT13             @@OPT28             @
@REQ14             @@REQ29             @@OPT14             @@OPT29             @
@REQ15             @@REQ30             @@OPT15             @@OPT30             @
)INIT                                                                           
.HELP= TSOUMEN1                                                                 
 &ZHTOP   = TSOUMEN1                                                           
 &ZHINDEX = TSOUMEN1                                                           
 IF (&OPTC = 0)                       
   .ATTRCHAR(¯) = 'INTENS(NON)'
   .ATTRCHAR(!) = 'INTENS(NON)'
   &TIMDATE = '&ZTIME &ZMONTH/&ZDAY/&ZJDATE'                                   
 &DST = &YOSDIST                                                               
 &SMFI= &YMPSMFI                                                               
)REINIT                                                                         
  REFRESH (QESN0,QESN1,QESN2,QESN3,QESN4,QESN5,QESN6,QESN7,                     
           QESN8,QESN9,QESN10,QESN11,QESN12,QESN13,                             
           QESN14,QESN15,QESN16,QESN17,QESN18,QESN19,         
          QESN20,QESN21,QESN22,QESN23,QESN24)             
 REFRESH (QESN25,QESN26,QESN27,QESN28,QESN29,             
          QESN30,QESN31,QESN32,QESN33,QESN34,             
          QESN35,QESN36,QESN37,QESN38,QESN39,             
          QESN40,QESN41,QESN42,QESN43,QESN44,             
          QESN45,QESN46,QESN47,QESN48,QESN49,             
          QESN50,QESN51,QESN52,QESN53,QESN54,             
          QESN55,QESN56,QESN57,QESN58,QESN59,QESN60)     
 REFRESH (QBSN0,QBSN1,QBSN2,QBSN3,QBSN4,QBSN5,QBSN6,QBSN7,
          QBSN8,QBSN9,QBSN10,QBSN11,QBSN12,QBSN13,       
          QBSN14,QBSN15,QBSN16,QBSN17,QBSN18,QBSN19,     
          QBSN20,QBSN21,QBSN22,QBSN23,QBSN24)             
 REFRESH (QBSN25,QBSN26,QBSN27,QBSN28,QBSN29,             
          QBSN30,QBSN31,QBSN32,QBSN33,QBSN34,             
          QBSN35,QBSN36,QBSN37,QBSN38,QBSN39,             
          QBSN40,QBSN41,QBSN42,QBSN43,QBSN44,             
          QBSN45,QBSN46,QBSN47,QBSN48,QBSN49,             
          QBSN50,QBSN51,QBSN52,QBSN53,QBSN54,             
          QBSN55,QBSN56,QBSN57,QBSN58,QBSN59,QBSN60)     
)PROC                                                                 
  IF (&CMDI ¬= &Z)                                                     
      &CMDI  = 'PGM(DGTFMD01) PARM(&ZCMD) NEWAPPL(DGT) NOCHECK'       
 &ZSEL = TRANS( TRUNC (&ZCMD,'.')                                     
      A,'&CMDA'
     B,'&CMDB'
     C,'&CMDC'
     D,'&CMDD'
     E,'&CMDE'                                 
    ' ',' '                                             
      X,'EXIT'                                           
      *,'?'                                             
   )                                                     
&ZTRAIL = .TRAIL                                         
)END                                                 


Re: ISPF Panel Symbols

PostPosted: Fri Jan 23, 2015 4:02 pm
by Stefan
The ISPF panel retrieves the variables &CMDA, &CMDB etc. from the ISPF function pool. If the currently executing dialog function refers to an interpretive language (CLIST, REXX) the function pool and the command processor's variable list are identical. So you will find the processing of these variables within the CLIST or REXX coding.
But how to find what program is currently active?
Before invoking your function you should issue "tso executil ts" to start interactive tracing of the REXX Interpreter. This is the most probable assumption of what language is used. When the REXX interpreter starts you have the chance to interactively execute additional REXX statements. Now enter "parse source xxx;say xxx" and you will see a new line written to your screen. The third word is the name of the active REXX program.
Once you've got the program's name you should switch off tracing by entering "executil te". When you now again have an ISPF panel with command input field, enter "tso isrddn m <rexx name>". This utility will search all datasets currently allocated to your TSO session for the REXX program. With line command "v" you might inspect the code and find all references to the variables used in the panel.
However if the currently active program is a CLIST or a compiled program it is more difficult to find the ist name.
But first you should try the approach described above.

Re: ISPF Panel Symbols

PostPosted: Fri Jan 23, 2015 4:24 pm
by deucalion0
Thank you very much Stefan, i will try your advice right now and let you know how I get on!! Thank you!