Shmuel,
All I see is that your save area code is bad
Thanks. I'm not sure how that 64 bit save area code got stuck in there.
What's in SESSBLK?
SESSBLK is just a user control block with the 'session' variables. The
values for SESSPRI and SESSALT and SESSATTR are still zero after the SVC
call.
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.
I'm not sure I understand. I get an assembly error with "Previously defined
symbol' when I re-use the GTTLIST label.
Thank you,
Brian Chapman
On Tue, Nov 1, 2022 at 3:42 PM Seymour J Metz <[email protected]> wrote:
> 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
>
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN