Here is a program I wrote last millennium. Not saying it's the best, but it
worked at the time.
WHEREAMI CSECT
WHEREAMI RMODE 24
WHEREAMI AMODE 31
***********************************************************************
* *
* WHEREAMI - *
* COMMON INTERFACE FOR BATCH, CICS, COM-PLETE, AND TSO. *
* DETERMINES ENVIRONMENT BASE ON PGM NAME IN JFCB. *
* IF IN CICS, OR COM-PLETE, DETERMINES WHETHER IT IS PROD, QA,*
* OR TEST, BASED ON JOBNAME. *
* *
* DATA FORMAT BEING PASSED: *
* 01 WHEREAMI-INTERFACE *
* 05 WHEREAMI-INTERFACE-LENGTH PIC S9(4) VALUE +10. *
* 05 WHEREAMI-ENVIRONMENT PIC X(4) VALUE SPACES. *
* 88 ENVIRONMENT-UNDETERMINED VALUE '****'. *
* 88 EXECUTING-IN-BATCH VALUE 'BTCH'. *
* 88 EXECUTING-IN-CICS VALUE 'CICS'. *
* 88 EXECUTING-IN-COMPLETE VALUE 'CMPL'. *
* 88 EXECUTING-IN-TSO VALUE 'TSO '. *
* 05 WHEREAMI-CICS-REGION PIC X(4) VALUE SPACES. *
* 88 ENVIRONMENT-UNDETERMINED VALUE '****'. *
* 88 EXECUTING-IN-PROD VALUE 'PROD'. *
* 88 EXECUTING-IN-QUAL VALUE 'QUAL'. *
* 88 EXECUTING-IN-TEST VALUE 'TEST'. *
* *
***********************************************************************
* *
* INPUTS - *
* REG 1 - ADDRESS OF PARAMETER LIST *
* REG13 - ADDRESS OF REGISTER SAVE AREA *
* REG14 - RETURN ADDRESS *
* REG15 - ENTRY POINT ADDRESS. *
* *
***********************************************************************
* *
* ATTRIBUTES - *
* REENTRANT AND REUSABLE *
* *
***********************************************************************
* *
* DEFINE REGISTER EQUATES, SAVE CALLERS REGISTERS, GETMAIN STORAGE, *
* AND ESTABLISH ADDRESSABILITY. *
* *
***********************************************************************
R0 EQU 0
R1 EQU 1 ADDR OF PARM LIST
R2 EQU 2 ADDR OF PSA
R3 EQU 3 ADDR OF TCB
R4 EQU 4 ADDR OF TIOT
R5 EQU 5 ADDR OF JSCB
R6 EQU 6 ADDR OF CVT
R7 EQU 7 ADDR OF SMCA
R8 EQU 8
R9 EQU 9
R10 EQU 10 WORK REG
R11 EQU 11
R12 EQU 12 1ST BASE REGISTER
R13 EQU 13
R14 EQU 14
R15 EQU 15
*
WHEREAMI CSECT
BAKR R14,R0 SAVE CALLERS STATUS ON STACK
LR R12,R15 LOAD BASE REGISTER
USING WHEREAMI,R12 -AND EST ADDR TO IT
LA R13,0 INDICATE NO SAVE AREA
L R10,0(,R1) GET ADDR OF PARMLIST
USING PARMLIST,R10
*
LA R2,0 LOAD ADDR OF PSA
USING PSA,R2
L R3,PSATOLD GET ADDR OF CURRENT TCB
USING TCB,R3
L R4,TCBTIO GET ADDR OF TIOT
USING TIOT1,R4
L R5,TCBJSCB GET ADDR OF JSCB
USING IEZJSCB,R5
L R6,FLCCVT GET ADDR OF CVT
USING CVT,R6
L R7,CVTSMCA GET ADDR OF SMCA
USING SMCABASE,R7
*
CKCICS CLC JSCBPGMN(3),=C'DFH' IS THIS A CICS REGION?
BNE CKCMPL -NO, CHECK COMPLETE REGION
MVC PARMENV,=C'CICS ' -YES, SET PARM TO CICS
CKPRDFOR CLC TIOCNJOB(6),=C'PRDFOR' IS CICS REGION PRODUCTION?
BNE CKSYSFOR -NO, CHECK NEXT REGION.
MVC PARMREG,=C'PROD' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKSYSFOR CLC TIOCNJOB(6),=C'SYSFOR' IS CICS REGION Q/A?
BNE CKDEVFOR -NO, CHECK NEXT REGION.
MVC PARMREG,=C'QUAL' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKDEVFOR CLC TIOCNJOB(6),=C'DEVFOR' IS CICS REGION TEST?
BNE CKINTFOR -NO, CHECK NEXT REGION
MVC PARMREG,=C'TEST' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKINTFOR CLC TIOCNJOB(6),=C'INTFOR' IS CICS REGION TEST?
BNE CKSUPFOR -NO, CHECK NEXT REGION.
MVC PARMREG,=C'TEST' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKSUPFOR CLC TIOCNJOB(6),=C'SUPFOR' IS CICS REGION TEST?
BNE CKCICSUN -NO, SET UNDETERMINED REGION
MVC PARMREG,=C'TEST' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKCICSUN MVC PARMREG,=X'5C5C5C5C' SET REGION TO ****
B CKPARM10 -AND CHECK PARM LENGTH
*
CKCMPL CLC JSCBPGMN(7),=C'COMPLET' IS THIS A COM-PLETE REGION?
BNE CKTSO -NO, CHECK IF TSO
MVC PARMENV,=C'CMPL ' -YES, SET PARM TO COM-PLETE
CKCOMPPR CLC TIOCNJOB(6),=C'COMPPR' IS COM-PLETE REGION PRODUCTION?
BNE CKCOMPTS -NO, CHECK FOR Q/A
MVC PARMREG,=C'PROD' -YES, SET PARM TO PROD
B CKPARM10 -AND CHECK PARM LENGTH
CKCOMPTS CLC TIOCNJOB(6),=C'COMPTS' IS COM-PLETE REGION TEST?
BNE CKCMPLUN -NO, SET UNDETERMINED REGION
MVC PARMREG,=C'TEST' -YES, SET PARM TO TEST
B CKPARM10 -AND CHECK PARM LENGTH
CKCMPLUN MVC PARMREG,=X'5C5C5C5C' SET REGION TO ****
B CKPARM10 -AND CHECK PARM LENGTH
*
CKTSO CLC JSCBPGMN(3),=C'IKJ' IS THIS A TSO SESSION?
BNE CKBATCH -NO, CHECK IF BATCH
MVC PARMENV,=C'TSO ' -NO SET PARM TO TSO
MVC PARMREG,=X'5C5C5C5C' SET REGION TO ****
B CKPARM10 -AND CHECK PARM LENGTH
*
CKBATCH MVC PARMENV,=C'BTCH' -NO SET PARM TO BATCH
MVC PARMREG,=X'5C5C5C5C' SET REGION TO ****
*
CKPARM10 CLC PARMLEN,=X'000A' IS PARM LENGTH = 10?
BE RETURN YES, RETURN
*
*
* ADD NEW CODE FOR ADDITIONAL FUNCTIONALITY HERE
*
* DC F'0'
RETURN PR RETURN TO CALLING PROGRAM
LTORG
PARMLIST DSECT
PARMLEN DS CL2 LENGTH OF PARMLIST
* A(10)- VER 1.0 OF WHEREAMI
PARMENV DS CL4
* CICS - CICS ENVIRONMENT
* CMPL - COM-PLETE ENVIRONMENT
* BTCH - BATCH ENVIRONMENT
PARMREG DS CL4
* PROD - PRODUCTION REGIONS
* QUAL - QUALITY ASSURANCE REGIONS
* TEST - TESTING REGIONS
IKJTCB
IHAPSA
IEZJSCB
IEFTIOT1
CVT DSECT=YES
IEESMCA
END
_________________________________________________________________
Dave Jousma
Manager Mainframe Engineering, Assistant Vice President
[email protected]
1830 East Paris, Grand Rapids, MIĀ 49546 MD RSCB2H
p 616.653.8429
f 616.653.2717
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf
Of PINION, RICHARD W.
Sent: Friday, June 30, 2017 12:52 PM
To: [email protected]
Subject: Assembler program
I need a program or snippet of code that determines if the program is being
executed from a TSO user or a batch job.
FIRST TENNESSEE
Confidentiality notice:
This e-mail message, including any attachments, may contain legally privileged
and/or confidential information. If you are not the intended recipient(s), or
the employee or agent responsible for delivery of this message to the intended
recipient(s), you are hereby notified that any dissemination, distribution, or
copying of this e-mail message is strictly prohibited. If you have received
this message in error, please immediately notify the sender and delete this
e-mail message from your computer.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
[email protected] with the message: INFO IBM-MAIN
This e-mail transmission contains information that is confidential and may be
privileged. It is intended only for the addressee(s) named above. If you
receive this e-mail in error, please do not read, copy or disseminate it in any
manner. If you are not the intended recipient, any disclosure, copying,
distribution or use of the contents of this information is prohibited. Please
reply to the message immediately by informing the sender that the message was
misdirected. After replying, please erase it from your computer system. Your
assistance in correcting this error is appreciated.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN