home about us   contact us
 
   







 


Chicago-Soft
ATTN: TSO Times
One Maple Street
Hanover, NH 03755
(603) 643-4002
information
@tsotimes.com

 

Why Develop TSO Source Code

Download this source code in text format (SENDTOME)

           
***********************************************************************
* *
* Title - SENDTOME *
* *
* Fundtion / Operation - SENDTOME is a sample TSO command written *
* to illustrate an article for TSO Journal *
* *
* Command Syntax - *
* SENDTOME 'Text to echo to TSO terminal' *
* *
* Status / Change Level - *
* V1L0 - August 2003 *
* *
* Attributes - SENDTOME is not reentrant, not refreshable and not *
* reusable. It operates in problem key and problem state in TCB *
* mode as a TSO command processor. *
* *
* Character Set - EBCDIC *
* *
***********************************************************************
EJECT
IKJCPPL ,
SPACE 5
IKJPPL ,
MYPPLSZ EQU *-PPL
SPACE 5
IKJIOPL
MYIOPLSZ EQU *-IOPL
PUSH PRINT
PRINT NOGEN
CVT DSECT=YES
POP PRINT
EJECT
* INITIAL ENTRY - PREPARE THE PPL AND IOPL TSO CONTROL BLOCK
SPACE 1
SENDTOME CSECT DEFINE PROGRAM CSECT
SPACE 1
USING CPPL,R1 DEFINE CPPL ADDRESSABILITY
USING PDL,R10 DEFINE PDL ADDRESSABILITY
USING *,R12 DEFINE PROGRAM ADDRESSABILITY
USING PPL,MYPPL DEFINE PPL ADDRESSABILITY
USING IOPL,MYIOPL DEFINE IOPL ADDRESSABILITY
SPACE 1
SAVE (14,12),,* SAVE CALLER'S REGISTERS
LR R12,R15 COPY ENTRY POINT ADDRESS TO REG 12
LA R15,S LOAD ADDRESS OF A NEW SAVE AREA
ST R15,8(,R13) ADD NEW SAVE AREA TO THE
ST R13,4(,R15) SAVE AREA CHAIN
LR R13,R15 ESTABLISH NEW SAVE AREA POINTER
SPACE 1
L R0,CPPLCBUF LOAD ADDR OF THE COMMAND BUFFER
ST R0,PPLCBUF STORE IN THE PPL
SPACE 1
L R0,CPPLECT LOAD ADDR OF THE TSO ECB
ST R0,PPLECT STORE IN THE PPL
ST R0,IOPLECT AND THE IOPL
SPACE 1
L R0,CPPLUPT LOAD ADDR OF THE TSO UPT
ST R0,PPLUPT STORE IN THE PPL
ST R0,IOPLUPT AND THE IOPL
SPACE 1
LA R0,ECB LOAD ADDR OF AN ECB
ST R0,PPLECB STORE IN THE PPL
ST R0,IOPLECB AND IOPL
SPACE 1
L R0,=A(PCL) LOAD ADDR OF AN IKJPARS PCL
ST R0,PPLPCL STORE IN THE PPL
SPACE 1
LA R0,ANSPTR LOAD ADDR OF THE PDL POINTER WORD
ST R0,PPLANS STORE IN THE PPL
SPACE 1
* PPLUWA IS NOT FILLED IN BECAUSE WE ARE NOT USING VALIDITY CHECK
* EXITS.
SPACE 1
CALLTSSR EP=IKJPARS, CALL IKJPARS TO DECODE ->
MF=(E,MYPPL) THE COMMAND LINE
SPACE 1
LTR R15,R15 TEST THE RETURN CODE FROM IKJPARS
BNZ EXIT BR IF PARSE BROKE
SPACE 1
* THIS IS THE "DO YOUR OWN THING" PART OF THE COMMAND. USE THE
* TEXT STRING IN THE PDL TO CREATE A NESSAGE FOR PUTLINE
SPACE 1
L R10,ANSPTR LOAD ADDR OF THE PDL BUILT BY PARS
L R0,PDLSTR LOAD ADDR OF STRING FROM THE PDE
LH R1,PDLSTR+4 LOAD LENGTH OF THE STRING FROM ->
PDE
LA R14,MSG LOAD ADDR OF MESSAGE FILL IN AREA ->
IN THE OUTPUT LINE
LR R15,R1 COPY MESSAGE LENGTH TO REG15
MVCL R14,R0 COPY MESSAGE TEXT FROM THE ->
COMMAND LINE TO OUTPUT LINE
SPACE 1
LA R1,TEXT LOAD START OF OUTPUT LINE
SR R14,R1 COMPUTE LENGTH OF THE OUTPUT LINE
STH R14,0(,R1) STORE LENGTH IN THE RDW OF THE ->
OUTPUT LINE
SPACE 1
IKJRLSA ANSPTR RELEASE THE PDL
SPACE 1
PUTLINE MF=(E,MYIOPL), WRITE THE GENERATED OUTPUT LINE ->
PARM=PUTLPB
SPACE 1
EXIT L R13,4(,R13) LOAD ADDR OF THE CALLER'S SAVE AREA
RETURN (14,12),T,RC=0 RESTORE REGS & RETURN TO CALLER
EJECT
S DC 9D'0' SAVE AREA
SPACE 1
* THE IOPL IS DOUBLE WORD ALIGNED BECAUSE THE SAVE AREA IS DOUBLE
* WORD ALIGNED. THE 0D'0' AT THE END OF THE DC FORCES THE NEXT
* DATA AREA TO BE DOUBLE WORD ALIGNED.
SPACE 1
MYIOPL DC XL(MYIOPLSZ)'0',0D'0' IOPL
MYPPL DC XL(MYPPLSZ)'0',0D'0' PPL
SPACE 1
PUTLPB PUTLINE OUTPUT=(TEXT,TERM,SINGLE,DATA), PUTLINE PARAMETER ->
MF=L BLOCK
SPACE 1
ECB DC F'0' AN ECB
ANSPTR DC A(*-*) PDL POINTER AFTER IKJPARS
TEXT DC 2AL2(0) OUTPUT LINE RDW
MSG DC CL256' ' MESSAGE FILL AREA
SPACE 1
* THE FOLLOWING PARSE MACROS WILL GENERATE THE FOLLOWING PDL
*
* PDL DSECT
* DS XL8
* PDLSTR DS A,H,2X
SPACE 1
PUSH PRINT THE EXPANSION OF THE PARSE MACROS
PRINT NOGEN IS SO CONFUSING AS TO BE USELESS
SPACE 1
* THE FOLLOWING PARSE MACROS DEFINE A COMMAND LINE CONTAINING A
* SINGLE TEXT STRING ENCLOSED WITHIN QUOTES, FOR EXAMPLE,
* SENDTOME 'Hi there'
SPACE 1
PCL IKJPARM DSECT=PDL DEFINE PCL AND PDL
PDLSTR IKJPOSIT QSTRING,ASIS, DEFINE A QUOTED TEXT STRING ->
PROMPT='STRING TO ECHO TO TERMINAL OPERATOR'
IKJENDP , END OF PCL AND PDL
POP PRINT
SPACE 1
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
SPACE 1
END SENDTOME

 



The TSO Times is back by popular demand!
Register now for your FREE subscription









 

Chicago-Soft, LTD
ISPF Tools & Toys
MVS Help Board
Lionel Dyck's Tools
IBM ISPF Page
Tom Brennan's Vista tn3270 Page
Mark Zelden's MVS Utilities


 


 

home · current articles · archives · forums ·
· subscribe · about us · contact us · links