IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How Panel having 2 scrollable areas interact with rexx


IBM Mainframe Forums -> TSO/ISPF
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Wed Feb 12, 2014 2:45 pm
Reply with quote

Hi,

I tried googling and it did not help me in finding or even giving me a hint on how to do this.
I am basically looking for a sample rexx and ispf with two scrollable area side-by-side like below, i could not find any.

In the below panel example i am just trying to point source database to the appropirate target database. The source and target can have varying no. of items in the list.

Code:
Map the correct source & target databases,
OP  OBJ# DATABASE          CREATOR | MAP#  DATABASE          CREATOR     
__     1 SOURCE1           TEST    | 5____ TARGET5           TEST   
__     2 SOURCE2           TEST    | 4____ TARGET4           TEST   
__     3 SOURCE3           TEST    | 3____ TARGET3           TEST   
__     4 SOURCE4           TEST    | 2____ TARGET2           TEST   
__     5 SOURCE5           TEST    | 1____ TARGET1           TEST   
*********** BOTTOM OF DATA ********| ********** BOTTOM OF DATA ***********


I have tried REXX & ISPF Panel having single scrollable area like below using Z Variables and populating ISPF table.
Code:
)ATTR DEFAULT(%+¯)                                                 
 ! TYPE(TEXT)    INTENS(HIGH) COLOR(YELLOW)                         
 % TYPE(TEXT)    INTENS(HIGH) SKIP(ON)            COLOR(WHITE)     
 + TYPE(TEXT)    INTENS(LOW)  SKIP(ON)            COLOR(TURQ)       
 ¯ TYPE(INPUT)   INTENS(HIGH) HILITE(USCORE) CAPS(ON) COLOR(WHITE) 
 $ TYPE(OUTPUT)  INTENS(HIGH) CAPS(OFF) COLOR(TURQ)                 
 # TYPE(OUTPUT)  INTENS(HIGH) CAPS(OFF) COLOR(WHITE)               
 £ TYPE(INPUT)   INTENS(LOW)                     COLOR(YELLOW)     
 ¦ TYPE(TEXT)    INTENS(HIGH) SKIP(ON)           COLOR(turq)       
 ` TYPE(OUTPUT)  INTENS(LOW)  SKIP(OFF)          COLOR(YELLOW)     
 @ AREA (DYNAMIC) EXTEND (ON)                                       
)BODY FORMAT(MIX)  EXPAND(\\)                                           
! \-\%Configure Control File!\-\$HLP +                             
!Config File  :#DSNAME1                                    +           
!Save to File :¯T+(Y/N)                                                 
+ +                                                                     
+-----------------------------------------------------------------------
!TableName        Setting             Value                          + 
)MODEL                                                                 
$Z               ¯Z                  ¯Z                                 
)INIT                                                                   
 .ZVARS = '(SECTION PARM VAL)'                                         

I am not able to think and dont know how to use z variables in a panel having two scrollable areas side-by-side and how rexx would interact with these two areas. Definately there will be two ISPF tables one for each areas, i am not sure how MODEL or INIT will be written in this case
Code:
)MODEL                                                                 
$Z               ¯Z                  ¯Z                                 
)INIT                                                                   
 .ZVARS = '(SECTION PARM VAL)'                                         

Please help giving me a pointer/clue, if you have time with a tiny example of how rexx & ispf interact with two scrollable areas would be great.

Thanks in advance,
Sushanth
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2593
Location: Silicon Valley

PostPosted: Wed Feb 12, 2014 8:01 pm
Reply with quote

Please get your terminology straight. You ask about a scrollable area, but your example, and what you want, is a table display. They are different.

I do not think you can do what you want with a table display.

my suggestion: Try a table display showing a single table, with a a line command for MAP. When the MAP line command is issued, display a second table and allow the user to select the matching database.
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 158
Location: Kuala Lumpur

PostPosted: Thu Feb 13, 2014 8:31 am
Reply with quote

I've never heard of Two scrolling in a single panel as of now. If you really want to achieve (make illusion to user) two scroll in a panel, here is the thought that MIGHT work (can't grantee, because I never tried).

1. As Pedro told, create a table display ( Make one table combined all the columns from Side-A and Side-B).
2. Populate table with all the details.
3. You can decide which side user scrolling based on cursor position or however you've planned already.
4. When the user scroll Side-A, Keep Side-B columns Same as it is and re-populate Side-A columns accordingly (starting from last record in panel +1 to till end-of-rows or limit of the display row).
5. Vice-Versa for Side-B scroll.

Hope I didn't confuse and Once again.. it's just a thought. icon_biggrin.gif
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Thu Feb 13, 2014 10:39 am
Reply with quote

Hello,

Thank You Pedro & Suresh for replying.

Sorry for using the wrong terminologies, i want to create something similar to below screen from CA DB2 RC/Migrator Tool - Compare Strategy

After the WHERE condition at both the sides(left-OP, OBJ#, DATABASE, CREATOR. on the right-MAP#, DATABASE, CREATOR), you can see two tables actually having varying number of rows and they can be scrolled independently. I want to do something similar.
Code:
AMER#1 ---------- RC/M Primary Object Mapping ----------------- 13-02-14 04:25
COMMAND ===>                                                  SCROLL ===> PAGE
                                                                             
STRATEGY ===> TEST1           DESCRIPTION  ===> TEST1                         
CREATOR  ===> BOBBYLL         SHARE OPTION ===> Y (U,Y,N,X,L)                 
--------------------------------------------------------------------- bobbyll
OBJECT      ===> DB (SG,DB,TS,T,I,V,S,A,TG,SQ,PR) REFRESH    ===> N           
                                                                             
SOURCE SSID => DB2P                     | TARGET SSID => DB2P                 
SOURCE LOC  => LOCAL                    | TARGET LOC  => LOCAL               
NAME        => bobbyll%           >     | NAME        => TES%               >
CREATOR     => *        >               | CREATOR     => *        >           
WHERE       => N                        | WHERE       => N                   
                                        |                                     
OP  OBJ# DATABASE           CREATOR     | MAP#  DATABASE           CREATOR   
__     1 bobbyllT           DB2ADMIN    | _____ TESAU1MO           DB2ADMIN   
__     2 bobbyllY           DB2ADMIN    | _____ TESAU1MT           DB2ADMIN   
__     3 bobbyllZ           DB2ADMIN    | _____ TESAU1TE           DB2ADMIN   
*********** BOTTOM OF DATA ************ | _____ TESAU1UJ           DB2ADMIN   
                                        | _____ TESAU1UO           DB2ADMIN   
                                        | _____ TESAU2MO           DB2ADMIN   
Src Cmds: RC/Query jump commands          Trg Cmds: RC/Query jump or Map nbr 
Press ENTER to process Query commands     Enter END to process mapped objects


Luckily i was also able to find the panel definations also. In the attribute section i could see two AREAs(@, #) and in the body i could see DATALINE and SATALINE variables. And down in the PROC section i could see they have used &CURSOR = .CURSOR &CSRPOS = .CSRPOS, as suresh mentioned they have used that technique also. Since dont have the codes to analyze anything, i just want a confirmation from experts here, is that a mere illusion of one-ispf table display making look like two scrollable tables and there is no concept of two scrollable areas in one ispf panel.
Code:
)ATTR                                                                   
 % TYPE(TEXT)    INTENS(HIGH) SKIP(ON)            COLOR(&TXHIGH)       
 + TYPE(TEXT)    INTENS(LOW)  SKIP(ON)            COLOR(&TXLOW)         
 £ TYPE(INPUT)   INTENS(LOW)                      COLOR(&INLOW)         
 ` TYPE(INPUT)   INTENS(LOW)                      COLOR(&INLOW) PAD('_')
 ¦ TYPE(OUTPUT)  INTENS(HIGH) SKIP(ON)            COLOR(&OTHIGH)       
 ? TYPE(OUTPUT)  INTENS(LOW)  SKIP(ON)  COLOR(&OTSCRI)                 
01 TYPE(DATAOUT) INTENS(LOW)  SKIP(ON)  CAPS(ON)  COLOR(&OTLOW)         
02 TYPE(DATAOUT) INTENS(HIGH) SKIP(ON)  CAPS(ON)  COLOR(&OTHIGH)       
03 TYPE(DATAIN)  INTENS(HIGH)           CAPS(ON)  COLOR(&INHIGH)       
04 TYPE(DATAIN)  INTENS(LOW)            CAPS(ON)  COLOR(&INLOW)         
05 TYPE(DATAIN)  INTENS(HIGH)           CAPS(ON)  COLOR(&INHIGH) PAD('_'
06 TYPE(DATAIN)  INTENS(LOW)            CAPS(ON)  COLOR(&INLOW)  PAD('_'
11 TYPE(DATAOUT) INTENS(HIGH) SKIP(ON)  CAPS(ON)  COLOR(&OTHIGH)       
 @ AREA(DYNAMIC) EXTEND(OFF) SCROLL(ON)                                 
 # AREA(DYNAMIC) EXTEND(OFF) SCROLL(OFF)                               
 > TYPE(CHAR) COLOR(&OTSCRI)                                           
 < TYPE(CHAR) COLOR(&OTSCRI)                                           
)BODY FORMAT(MIX)  EXPAND(\\)                                           
+\-\%RC/M Primary Object Mapping+\-\¦PDATE   ¦PTIME+                   
%COMMAND ===>£ZCMD                                            %SCROLL ==
%                                                                       
+STRATEGY%===>£STRATEGY+       DESCRIPTION %===>£DESC                   
+CREATOR %===>¦CREATOR +       SHARE OPTION%===>£Z+(U,Y,N,X,L)         
%------------------------------------------------------------------\-\¦Z
+OBJECT     %===>£Z +(SG,DB,TS,T,I,V,S,A,TG,SQ) REFRESH   %===>£Z+     
+                                                                       
+SOURCE SSID%=>¦Z   %                     |+TARGET SSID%=>¦Z   +       
+SOURCE LOC %=>¦MCSLOC          %         |+TARGET LOC %=>¦MCTLOC       
+NAME       %=>£OBJECT            ?I0%    |+NAME       %=>£MCTOBJ       
+&PROMPT1   %=>£USER    ?I1%              |+&PROMPT1   %=>£MCTUSER ?I3+
+WHERE      %=>£Z£WHERE2  %               |+WHERE      %=>£Z£WHERE4  + 
%                                         |                             
@DATALINE,SATALINE                      @%|#DATALIN2,SATALIN2           
@                                       @%|#                           
@                                       @%|#                           
@                                       @%|#                           
@                                       @%|#                           
@                                       @%|#                           
@                                       @%|#                           
%Src Cmds: RC/Query jump commands           Trg Cmds: RC/Query jump or M
+Press%ENTER+to process Query commands      Enter%END+to process mapped
+                                                                       
)INIT                                                                   
 .ZVARS = '(SHAREOPT OBJ MCFRESH MSSYS MCTSYS WHERE1 WHERE3)'           
 .HELP  = RMHPMA00                                                     
 IF  (&MCFRESH = ' ')                                                   
   &MCFRESH = 'N'                                                       
 IF  (&OBJ = 'TS')                                                     
   &PROMPT1 = 'DBNAME '                                                 
   .ATTR(I1) = 'INTENS(NON)'                                           
   .ATTR(I3) = 'INTENS(NON)'                                           
 ELSE                                                                   
   &PROMPT1 = 'CREATOR'                                                 
)PROC                                                                   
 IF  (&ZCMD NE MAIN,EXIT,CAN,CANCEL,PROFILE,PROF)                       
   VER (&OBJ,NB,MSG=RM119)                           
   VER (&OBJ,LIST,SG,DB,TS,T,I,V,S,A,TG,SQ,MSG=RM120)
   VER (&MCFRESH,NB,LIST,Y,N,MSG=RM206)               
   VER (&WHERE1,NB,LIST,Y,N,S,MSG=RM019)             
   VER (&WHERE3,NB,LIST,Y,N,S,MSG=RM019)             
 IF  (&ZCMD NE CAN,CANCEL,PROFILE,PROF)               
   VER (&STRATEGY,NB)                                 
   VER (&SHAREOPT,NB,LIST,U,Y,N,X,L)                 
 &LVLINE = LVLINE(DATALINE)                           
 VPUT (LVLINE) SHARED                                 
 &LVLIN2 = LVLINE(DATALIN2)                           
 VPUT (LVLIN2) SHARED                                 
 &CURSOR = .CURSOR                                   
 &CSRPOS = .CSRPOS                                   
)FIELD                                               
  FIELD(OBJECT) IND(I0,'<>')                         
  FIELD(USER)   IND(I1,'<>')                         
  FIELD(MCTOBJ) IND(I2,'<>')                         
  FIELD(MCTUSER) IND(I3,'<>')                         
)END       


Initially i had the idea that it was possible from the link Scrollable Area Examples Figure 61 as it says it is an invalid scrollable defination. In the defination AREA1 is having 7 lines and AREA2 is having 9 lines, by making it both 7 and 7 lines will it become valid or entire defination itself is wrong in the example.


Regards,
Sushanth
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 158
Location: Kuala Lumpur

PostPosted: Thu Feb 13, 2014 11:40 am
Reply with quote

Sushanth,

I'll try to find a way to help more effectively, if I can icon_smile.gif

until then,
You can find advanced Panel options in this book ISPF Panels – Advanced - Confex
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Thu Feb 13, 2014 11:48 am
Reply with quote

Thanks Suresh,

I already have that PDF opened. icon_biggrin.gif

Right now i am just looking at LVLINE function and wondering is that vertical small split screen.

Regards,
Sushanth
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2593
Location: Silicon Valley

PostPosted: Thu Feb 13, 2014 7:14 pm
Reply with quote

The sample panel is actually an example of a dynamic area. I suppose, an example of two dynamic areas.

As a developer, you have total control of the data within the dynamic area. You have to provide the attributes and data that makes it appear and behave like a table display.
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Thu Feb 13, 2014 8:32 pm
Reply with quote

Thank You Pedro, i have another doubt

So far i have worked on panels having one dynamic area like below, from the look itself its explainable that $Z is output, second and third z variable are inputs.
Code:
+-----------------------------------------------------------------------
 !TableName        Setting             Value                          + 
 )MODEL                                                                 
 $Z               ¯Z                  ¯Z                                 

In the CA Migrator panel, i don't see any attribute characters of type INPUT or OUTPUTs

Code:
@DATALINE,SATALINE                      @%|#DATALIN2,SATALIN2           
 @                                       @%|#                           
 @                                       @%|#                         

DATALINE & DATALIN2 are area names. I suppose SATALINE & SATALIN2 are variables. Can you please let me know how the attribute types are dynamically changed just to get an understanding. Like in the first line it is all header of type OUTPUT and in the second line for OP it is an INPUT and for MAP# it is input.

Code:
OP  OBJ# DATABASE           CREATOR     | MAP#  DATABASE           CREATOR   
 __     1 bobbyllT           DB2ADMIN    | _____ TESAU1MO           DB2ADMIN   

Thanks,
Sushanth
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2593
Location: Silicon Valley

PostPosted: Thu Feb 13, 2014 10:08 pm
Reply with quote

Quote:
So far i have worked on panels having one dynamic area like below

No, no you have not. Your example is of a table display panel (it uses the )MODEL tag). You use the TBDISPL service to display it.

A panel with a scrollable area is different than a table panel. And a panel with a dynamic area is still different than that. You use the DISPLAY service to display panels with a scrollable area or with a dynamic area.

You use 'dynamic area' as a descriptive term, but it is actually a technical term with a specific meaning in ISPF. Search the ISPF Dialog Developers Guide and Reference for 'dynamic area'
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2593
Location: Silicon Valley

PostPosted: Thu Feb 13, 2014 10:14 pm
Reply with quote

Quote:
DATALINE & DATALIN2 are area names. I suppose SATALINE & SATALIN2 are variables. Can you please let me know how the attribute types are dynamically changed just to get an understanding.

For an example, see the last post here.
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 158
Location: Kuala Lumpur

PostPosted: Fri Feb 14, 2014 7:56 am
Reply with quote

SATALINE & SATALIN2 are contains value of attribute format for the DATALINE & DATALIN2 respectively.

If you refer Page.22 in PDF, I've posted before, you can understand better.
Back to top
View user's profile Send private message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Sat Feb 15, 2014 11:47 am
Reply with quote

Dynamic Area seems to be complex.... hmmm. Thank You Very Much Pedro, I will start from there.

Also Thank You Suresh.


Regards,
Sushanth
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> TSO/ISPF

 


Similar Topics
Topic Forum Replies
No new posts Run rexx in batch job CLIST & REXX 6
No new posts Does anyone know rexx for VSE CLIST & REXX 3
No new posts TSO ALLOC In REXX Needs Improvement JCL & VSAM 3
No new posts REXX/CMS How to place command console... CLIST & REXX 4
No new posts Help needed in automation cics transa... CLIST & REXX 1
Search our Forums:

Back to Top