All I see is that your save area code is bad, but that shouldn't affect the
returned values from GTTERM. What's in SESSBLK?
I would probably have written something like
GTTLIST GTTERM PRMSZE=SESSPRI,ALTSZE=SESSALT,ATTRIB=SESSATTR, *
MF=(E,GTTLIST)
for documentation, but AFAIK that wouldn't affect the length.
--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
________________________________________
From: IBM Mainframe Discussion List [[email protected]] on behalf of
Brian Chapman [[email protected]]
Sent: Tuesday, November 1, 2022 2:45 PM
To: [email protected]
Subject: GTTERM assistance
Hello all,
Any assistance would be greatly appreciated.
I am working on a SNA interface for a batch framework. This is mostly just
a massive learning exercise that will likely never be utilized, but I have
learned SO much while working on this project (currently 6 years in the
making).
The address space accepts terminals with MOD2 terminals and everything
displays great. However, I would like to support larger terminal sizes. My
first hurdle is GTTERM. I understand that my program should be in RMODE24
and AMODE24. The program is assembled with AMODE 31, but performs a SAM24
and SAM31 before and after the SVC call. The dynamic storage area for the
program is also acquired below the line.
I check register 15 after the SVC, and it is zero. But the SVC parameter
values are still zero.
Here is my source:
REGEQU
COPY SESSBLK
*
WORKAREA DSECT
WORKNAME DS CL8
SAVEAREA DS 18F
SAVERC DS F
SAVEPARM DS F
*
GTTLIST GTTERM MF=L
*
WORKLEN EQU *-WORKAREA
*
WORKREG EQU R3
SESSREG EQU R5
*
PORTTC04 CSECT
PORTTC04 AMODE 31
PORTTC04 RMODE 24
STM R14,R12,12(R13) SAVE REGISTERS
LR R12,R15 ESTABLISH BASE
USING PORTTC04,R12 *
B START
*
DC CL9'PORTTC04'
DC CL9'&SYSDATC'
DC CL5'&SYSTIME'
*
START DS 0H
LR R2,R1 SAVE REGISTER 2
LHI R7,WORKLEN LOAD WORK AREA LENGTH
GETMAIN RU,LV=(R7),LOC=BELOW
LR WORKREG,R1 *
USING WORKAREA,WORKREG SET ADDRESSIBILITY
*
LR R6,WORKREG LOAD REGISTER
LA R8,0 SET DUMMY FROM ADDRESS
XR R9,R9 SET PADDING TO LOW VALUES
MVCL R6,R8 INITIALIZE AREA
*
ST R13,SAVEAREA+4 CHAIN CALLER'S SAVEAREA ADDRESS
LA R13,SAVEAREA
ST R13,SAVEAREA+8 SAVE CURRENT SAVEAREA ADDRESS
MVC SAVEAREA(4),=CL4'F4SA'
MVC WORKNAME(8),=CL8'PORTTC04'
*
GETLINK DS 0H
LR R1,R2 RESTORE REGISTER 2
ST R1,SAVEPARM
LT SESSREG,4(R1) GET ADDRESS OF SESSBLK
BZ BADLINK NO LINKAGE PASSED
USING SESSBLK,SESSREG SET ADDRESSIBILITY
*
GETTERM DS 0H
SAM24
*
GTTERM PRMSZE=SESSPRI,ALTSZE=SESSALT,ATTRIB=SESSATTR, *
MF=(E,GTTLIST)
*
ABEND 91,DUMP
SAM31
*
LTR R15,R15
BNZ BADRC
*
ST R15,SESSATTR+4
*
B RETURN
*
BADRC DS 0H
WTO 'PORTTC04 BAD GTTERM RC'
MVHI SAVERC,16 SET BAD RETURN CODE
ABEND 98,DUMP
*
BADLINK DS 0H
WTO 'PORTTC04 INVALID LINKAGE PARAMETERS'
MVHI SAVERC,16 SET BAD RETURN CODE
ABEND 99,DUMP
*
RETURN DS 0H
L R13,SAVEAREA+4 RESTORE R13
L R2,SAVERC LOAD RC
*
LHI R0,WORKLEN LOAD WORK AREA LENGTH
FREEMAIN RU,LV=(R0),A=(WORKREG)
*
LR R15,R2 LOAD RC FROM R2
L R14,12(R13) RESTORE R14
LM R0,R12,20(R13) RESTORE R0-R12 (RETAIN R15)
BR R14 RETURN TO CALLER
*
LTORG
*
END
I added the ABEND 91 instruction to produce a dump. Register 3 contains the
SVC plist.
The SESSBLK contains the SESSPRI, SESSALT, and SESSATTR fields (addressed
by register 5).
Here are the dump contents:
Program PORTTC04 issued an SVC 13 (ABEND) code U0091
at address 00000000_00007A5C, offset B4 in Program PORTTC04
Registers when request issued.
0 00000000_80000000 1 00000000_8000005B 2 00000000_000943C8 3 00000000_
0002CF48
4 00000000_362BC048 5 00000000_0002CBF0 6 00000000_B5D08928 7
00000000_B5D08A28
8 00000000_00000000 9 00000000_00000000 A 00000000_40404040 B
00000000_00000000
C 00000000_800079A8 D 00000000_0002CF50 E 00000000_B5FA5C56 F
00000000_00000000
Last Instruction: SVC 13 ABEND
Instruction has no operands
PSW when request issued: 078D1000 00007A5E
PER-Mask . . . . . . . . . . OFF
DAT Mode . . . . . . . . . . ON
I/O Mask . . . . . . . . . . ON
External Mask. . . . . . . . ON
PSW Key. . . . . . . . . . . 8
EC Mode. . . . . . . . . . . ON
Machine-Check Mask . . . . . ON
Wait State . . . . . . . . . OFF
Problem State. . . . . . . . ON
Address Space Control. . . . Primary ASC Mode
Condition Code . . . . . . . 1
Program Mask . . . . . . . . 0
Addressing Mode. . . . . . . 24 bit
Instruction Address. . . . . 007A5E
The program's dynamic storage area:
Address Offset from 00000000_0002C000 Origin STORAGE 0001
0002CF48 000F48 D7D6D9E3 E3C3F0F4 C6F4E2C1 000945C0 *PORTTC04F4SA.. {* R3
0002CF58 000F58 0002CF50 00000000 00000000 00000000 *.. &............*
0002CF68 000F68 00000000 00000000 00000000 00000000 *................*
0002CF78 000F78 00000000 00000000 00000000 00000000 *................*
0002CF88 000F88 00000000 00000000 00000000 00000000 *................*
0002CF98 000F98 00000000 000943C8 00000000 00000000 *...... H........*
0002CFA8 000FA8 00000000 00000000 0002CBFC 0002CBFE *.......... .. *
0002CFB8 000FB8 8002CC00 00000000 00000000 00000000 * .รถ.............*
0002CFC8 000FC8 00000000 00000000 00000000 00000000 *................*
0002CFD8 000FD8 00000000 00000000 00000000 00000000 *................*
0002CFE8 000FE8 00000000 00000000 00000000 00000000 *................*
Address Offset from 00000000_0002C000 Origin STORAGE 0001
0002CBFC 000BFC 00000000 00000000 00000000 00000000 *................*
Address Offset from 00000000_0002C000 Origin STORAGE 0001
0002CBFE 000BFE 00000000 00000000 00000000 00000000 *................*
Address Offset from 00000000_0002C000 Origin STORAGE 0001
0002CC00 000C00 00000000 00000000 00000000 00000000 *................*
Thank you,
Brian Chapman
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN