Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

3270 data stream programming

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CLIST & REXX
View previous topic :: :: View next topic  
Author Message
prino

Active Member


Joined: 07 Feb 2009
Posts: 982
Location: Oostende, Belgium

PostPosted: Wed Dec 10, 2014 3:50 pm    Post subject: 3270 data stream programming
Reply with quote

There are lots of references , see 3270 Data Stream Programmer's Reference (IBM) and 3270 Data Stream Programming (Tommy Sprinkle) to it, but there's one thing I cannot find and that is

How to find the screensize when at the READY prompt?

I could assume everyone is using 24x80, or create my fields always on the first line of the screen, but if anyone has a clue as how to find out the real geometry, I'd would love to see you share it with all of us.
Back to top
View user's profile Send private message

steve-myers

Active User


Joined: 30 Nov 2013
Posts: 460
Location: The Universe

PostPosted: Wed Dec 10, 2014 6:17 pm    Post subject:
Reply with quote

See the discussion of the GTDEVSIZ and GTSIZE macros in TSO/E Programming Services for your release.

Personally, I've never been comfortable with these macros, but their definition hasn't changed in many years. GTSIZE has always worked for me.
Back to top
View user's profile Send private message
Mickeydusaor

Active User


Joined: 24 May 2006
Posts: 258
Location: Salem, Oregon

PostPosted: Wed Dec 10, 2014 9:57 pm    Post subject:
Reply with quote

You also have the GTTERM macro instruction to determine the primary (default) and the alternate screen sizes for a 3270 display terminal.
Back to top
View user's profile Send private message
steve-myers

Active User


Joined: 30 Nov 2013
Posts: 460
Location: The Universe

PostPosted: Thu Dec 11, 2014 12:38 am    Post subject:
Reply with quote

In Rexx you have SYSVAR(SYSLTERM) and SYSVAR(SYSWTERM). In CLIST you have &SYSLTERM and &SYSWTERM. I'm not so sure how useful screen geometry would be useful at the READY prompt, but here's a mini command processor. In Rexx or CLIST the output can be OUTTRAPed.
Code:
GEOMETRY RSECT                     Establish program CSECT
GEOMETRY AMODE 31                  Establish program AMODE
GEOMETRY RMODE ANY                 Establish program RMODE
         PUSH  PRINT
         PRINT NOGEN
         IKJCPPL ,                 Define TSO CPPL
RCBUF    EQU   6+((CPPLCBUF-CPPL)/4)  Define registers
RPSCB    EQU   6+((CPPLPSCB-CPPL)/4)   containing CPPL
RECT     EQU   6+((CPPLECT-CPPL)/4)     data
RUPT     EQU   6+((CPPLUPT-CPPL)/4)
         SPACE 1
         IKJIOPL ,                 Define TSO IOPL
IOPLSIZE EQU   *-IOPL
         EJECT
WA       DSECT                     Define the work area
SAVEAREA DS    9D                  Establish 72 byte save area
MYIOPL   DS    XL(IOPLSIZE),0D     Storage for the IOPL
DWORK    DS    D                   Double word work area
PUTLPB   PUTLINE MF=L              PUTLINE parameter block
OLD      DS    2A                  PUTLINE Output Line Descriptor
ECB      DS    F                   ECB for PUTLINE
MSG      DS    2AL2,CL80           Message build area
WORK     DS    C' NNN',0D          Conversion work area
WASIZE   EQU   *-WA                Work area size
         POP   PRINT
         EJECT
GEOMETRY RSECT                     Return to program CSECT
         USING WA,11               Establish work area addressability
         USING *,12                Establishprogram addressability
         SAVE  (14,12),,*          Save registers
         LR    12,15               Prepare program base register
         LM    6,9,0(1)            Load CPPL into regs 6 through 9
         LA    5,WASIZE            Load work area length
         GETMAIN RU,LV=(5)         Get storage for the work area
         SR    15,15               Set reg 15 = 0
         LR    4,1                 Copy work area address to reg 4 and
         LR    11,1                 reg 11
         MVCL  4,14                Clear the work area
         LA    15,SAVEAREA         Load addr of the save area
         ST    13,4(,15)           Add save area to the
         ST    15,8(,13)            save area chain
         LR    13,15               Establish new save area pointer
         GTSIZE ,                  Get the terminal geometry
         LTR   0,0                 Test if 2D
         BNZ   FMTSCRN             Br if so
*                           ----+----1----+----2----+
         MVC   MSG+4(25),=C'GEO002I THE LINE SIZE IS '
         LA    14,MSG+4+25
         CVD   1,DWORK
         MVC   WORK,=X'40202120'
         LA    1,WORK+L'WORK-1
         EDMK  WORK,DWORK+6
         LR    0,1
         LA    1,WORK+L'WORK
         SR    1,0
         LR    15,1
         MVCL  14,0
         B     WRITELN
*                           ----+----1----+----2--
FMTSCRN  MVC   MSG+4(22),=C'GEO001I THE SCREEN IS '
         LA    14,MSG+4+22
         LR    2,1                 Copy line size to reg 2
         CVD   0,DWORK             Convert lines on screen
         MVC   WORK,=X'40202120'
         LA    1,WORK+L'WORK-1
         EDMK  WORK,DWORK+6
         LR    0,1
         LA    1,WORK+L'WORK
         SR    1,0
         LR    15,1
         MVCL  14,0
         MVC   0(3,14),=C' X '
         LA    14,3(,14)
         CVD   2,DWORK             Convert screen width
         MVC   WORK,=X'40202120'
         LA    1,WORK+L'WORK-1
         EDMK  WORK,DWORK+6
         LR    0,1
         LA    1,WORK+L'WORK
         SR    1,0
         LR    15,1
         MVCL  14,0
WRITELN  LA    1,MSG               Compute the line size
         SR    14,1
         STH   14,0(,1)
         LA    0,1                 Prepare the PUTLINE
         STM   0,1,OLD              Output Line Descriptor
         PUTLINE MF=(E,MYIOPL),PARM=PUTLPB,OUTPUT=OLD,  Write the     ->
               UPT=(RUPT),ECT=(RECT),ECB=ECB completed line
         L     13,4(,13)           Load addr of the higher save area
         LA    0,WASIZE            Free the work area
         FREEMAIN RU,LV=(0),A=(11)
         RETURN (14,12),T,RC=0     Restore registers & return
         DC    0D'0'
         LTORG ,
         DC    0D'0'
         END   GEOMETRY
Back to top
View user's profile Send private message
prino

Active Member


Joined: 07 Feb 2009
Posts: 982
Location: Oostende, Belgium

PostPosted: Thu Dec 11, 2014 1:53 am    Post subject: Reply to: 3270 data stream programming
Reply with quote

Steve,

The reason I need this is to enforce the "FirstName LastName" rule for "that" system. If I detect that a user doesn't have a valid name, I want to use data stream programming to force them to enter a valid name and it would be nice to do that in two lines. icon_cool.gif

I'm sure you could come up with something far more sophisticated, but I'll be sitting in Vilnius from Sunday for at least three weeks and I need to keep myself busy...
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CLIST & REXX All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts ODPP(Optim Data privacy Provider) Iss... Rama kishore IBM Tools 1 Mon Nov 07, 2016 5:46 pm
No new posts Can sending 5 MB data between cobol p... Kevin Vaz CICS 12 Tue Oct 18, 2016 4:50 pm
No new posts output data in CSV Format janmejay COBOL Programming 8 Sat Oct 15, 2016 2:20 pm
This topic is locked: you cannot edit posts or make replies. output data in CSV Format janmejay DFSORT/ICETOOL 3 Sat Oct 15, 2016 2:16 pm
No new posts FTP Server and FTP.DATA vasanthz All Other Mainframe Topics 2 Wed Oct 12, 2016 11:49 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us