Basic ASM question

216 views
Skip to first unread message

Mainframe Mainframe

unread,
Jul 27, 2012, 10:27:26 AM7/27/12
to ASSEMBL...@listserv.uga.edu
I'm trying to make a little CICS Assembler program an I get always a 0C4 at
execution. DFHSR0618 CICSPROD An illegal macro call or reference to the CSA
or TCA. Here's my program.

SETOPTI CSECT
STM R14,R12,12(R13) * SAVE CALLER'S REGS
USING SETOPTI,R12 * R12 IS BASE
ST R13,SAVEAREA+4
LA R13,SAVEAREA
B STARTUP
*
DC CL8'SETOPTI'
DC C'&SYSDATE'
DC
C'&SYSTIME'

STARTUP DS 0H
EXEC CICS ASKTIME
***********************************************************
*
RETOUR DS 0H
DFHEIRET

Does someone can help me.

Rzepka, Michael

unread,
Jul 27, 2012, 10:38:32 AM7/27/12
to ASSEMBL...@listserv.uga.edu
-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Mainframe Mainframe
Sent: Friday, July 27, 2012 4:27 PM
To: ASSEMBL...@LISTSERV.UGA.EDU
Subject: Basic ASM question

I'm trying to make a little CICS Assembler program an I get always a 0C4 at execution. DFHSR0618 CICSPROD An illegal macro call or reference to the CSA or TCA. Here's my program.

SETOPTI CSECT
STM R14,R12,12(R13) * SAVE CALLER'S REGS
LR R12,R15 <== where you will get entry point address for addressability !

Tony Thigpen

unread,
Jul 27, 2012, 10:41:12 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Where is you DFHEIENT?


Tony Thigpen

McKown, John

unread,
Jul 27, 2012, 10:47:06 AM7/27/12
to ASSEMBL...@listserv.uga.edu
You don't have the proper "setup" at the start of your CICS code. You can't use standard OS linkage setup.

You have:

SETOPTI CSECT
STM R14,R12,12(R13) * SAVE CALLER'S REGS
USING SETOPTI,R12 * R12 IS BASE
ST R13,SAVEAREA+4
LA R13,SAVEAREA
B STARTUP
*
DC CL8'SETOPTI'
DC C'&SYSDATE'
DC C'&SYSTIME'
STARTUP DS 0H
EXEC CICS ASKTIME
***********************************************************
*
RETOUR DS 0H
DFHEIRET



All you need is:

SETOPTI CSECT
B STARTUP
*
DC CL8'SETOPTI'
DC C'&SYSDATE'
DC C'&SYSTIME'
STARTUP DS 0H
EXEC CICS ASKTIME
***********************************************************
*
RETOUR DS 0H
EXEC CICS RETURN

You run this through the CICS Preprocessor, then though the assembler. In the CICS supplied proclib, you can use the DFHEITAL proc as example JCL.

Not meaning to be objectionable, but you really could use having some CICS programming training. CICS is nothing like batch. And if you use batch techniques, you are liable to crash CICS or, more likely, cause unacceptable response times.

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
john....@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM



> -----Original Message-----
> From: IBM Mainframe Assembler List
> [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of
> Mainframe Mainframe
> Sent: Friday, July 27, 2012 9:27 AM
> To: ASSEMBL...@LISTSERV.UGA.EDU
> Subject: Basic ASM question
>

McKown, John

unread,
Jul 27, 2012, 10:52:18 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Hum, I got my example from looking at some old code. It may be bad, because as Tony said, "where's your DFHEIENT?" (I don't have one either). You probably also need a DFHEISTG for the equivalent of COBOL's WORKING-STORAGE, aka "transaction specific storage".

Mainframe Mainframe

unread,
Jul 27, 2012, 10:52:31 AM7/27/12
to ASSEMBL...@listserv.uga.edu
I was using the convention that I use on my other assembler prog IDMS. In
CICS this is my first try. I have also try to not put base register an the
translator assign R3 as base register. What I want to do is just make an
assembler CICS program that can run in CICS. So if you have some idea of
what is wrong or a sample of what I want to do let me know. Thanks
2012/7/27 Rzepka, Michael <Michael...@commerzbank.com>

Binyamin Dissen

unread,
Jul 27, 2012, 11:04:07 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Include DFHEIA0 as the first CSECT in the load module.

On Fri, 27 Jul 2012 10:27:26 -0400 Mainframe Mainframe
<mainfram...@gmail.com> wrote:

:>I'm trying to make a little CICS Assembler program an I get always a 0C4 at
--
Binyamin Dissen <bdi...@dissensoftware.com>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

Rzepka, Michael

unread,
Jul 27, 2012, 11:06:40 AM7/27/12
to ASSEMBL...@listserv.uga.edu
I think if you follow the standard rules from IBM for progam-entry and building the savearea-chain and at the end for returning to the caller (system)
then the most will be done ! Everywhere you can find such a simple program in IBM Assembler-Manuals with this standards - something like this,
and there is (as I know) no difference in CICS - but I will have a look. This simple coding normally runs all the time without problems. Only if - start
with your own coding.

STM R14,R12,12(R13) SAVE REGS
LR R12,R15 LOAD BASE REG
USING GETSTORG,R12 ADDRESSABILITY
LR R15,R13 OLD SAVE AREA ADDRESS
LA R13,SAVEA POINT TO NEW SAVE AREA
ST R15,4(R13) PUT OLD SAVE ADDR IN IT
users code starts here....
L R2,0(R1) GET ADDRESS OF STORAGE LENGTH
ICM R2,15,0(R2) GET ACTUAL STORAGE LENGTH
L R3,4(R1) GET ADDRESS OF AREA TO UPDATE
GETMAIN EU,LV=(2),A=(3) GET STORAGE
and ends here
L R13,4(R13) GET OLD SAVE AREA ADDRESS
LM R14,R12,12(R13) RESTORE REGS
LA R15,0 SET RC=0
BR R14 RETURN
SAVEA DC 18F'0' SAVE AREA
LTORG
END GETSTORG




-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBL...@LISTSERV.UGA.EDU] On Behalf Of Mainframe Mainframe
Sent: Friday, July 27, 2012 4:53 PM
To: ASSEMBL...@LISTSERV.UGA.EDU
Subject: Re: Basic ASM question

David Stokes

unread,
Jul 27, 2012, 11:29:07 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Well after a quick google and a glance at a relevant IBM manual (I'm far from being a CICS programmer) I'd conclude that the Translator does all the infrastructure stuff. See "EXAMPLE Assembler language PROGRAM using LEASM" here (a bit down the page) and the translated results. Basically you just write the CICS bit it would seem.

http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=%2Fcom.ibm.cics.ts31.doc%2Fdfhp3%2Fdfhp36o.htm


-----Urspr�ngliche Nachricht-----
Von: IBM Mainframe Assembler List [mailto:ASSEMBL...@LISTSERV.UGA.EDU] Im Auftrag von Mainframe Mainframe
Gesendet: Freitag, 27. Juli 2012 16:27
An: ASSEMBL...@LISTSERV.UGA.EDU
Betreff: Basic ASM question

Dan Skomsky @ Home

unread,
Jul 27, 2012, 11:31:47 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Try this:

V100 TITLE 'SETOPTI, A LITTLE TEST CICS ASSEMBLER PROGRAM'
SETOPTI CSECT SET &SYSECT
*..*
DFHEIENT CODEREG=R11, DO EXEC $
EIBREG=R12, INTERFACE $
DATAREG=R13 INITIALIZATION
*..*
*..* STM R14,R12,12(R13) * SAVE CALLER'S REGS
*..* USING SETOPTI,R12 * R12 IS BASE
*..* ST R13,SAVEAREA+4
*..* LA R13,SAVEAREA
B STARTUP
*
DC CL8'SETOPTI'
DC C'&SYSDATE'
DC C'&SYSTIME'
SPACE 1
STARTUP DS 0H
EXEC CICS ASKTIME. <== DON'T FORGET THE PERIOD
***********************************************************
*
RETOUR DS 0H
*..* DFHEIRET
EXEC CICS RETURN. <== RETURN TO CICS
R11 EQU 11
R12 EQU 12
R13 EQU 13
LTORG , A NICE PLACE FOR THE LITERAL POOL
TITLE 'DYNAMIC WORK AREA'
DFHEISTG DYNAMIC AREA START
*
* USER DATA AREAS BEGIN
*
USERDAT DS CL100 HOLDS USER DATA
SPACE 1
*
* USER DATA AREAS END
*
DFHEIEND DYNAMIC AREA END
SPACE 4
END SETOPTI END ASSEMBLY, SUPPLY EP

Dan Skomsky @ Home

unread,
Jul 27, 2012, 11:38:16 AM7/27/12
to ASSEMBL...@listserv.uga.edu
Oops, I almost forgot. You need to insert:

*ASM XOPTS(NOPROLOG NOEPILOG)

As the first statement in this little program so that the Command Level
Translator doesn't insert unneeded crap into your source.


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBL...@LISTSERV.UGA.EDU]
On Behalf Of Dan Skomsky @ Home
Sent: Friday, July 27, 2012 10:32 AM
To: ASSEMBL...@LISTSERV.UGA.EDU
Subject: Re: Basic ASM question

Mainframe Mainframe

unread,
Jul 27, 2012, 3:10:32 PM7/27/12
to ASSEMBL...@listserv.uga.edu
Thanks it work.

2012/7/27 Dan Skomsky @ Home <poodl...@sbcglobal.net>

Coyne, Paul

unread,
Jul 27, 2012, 3:19:14 PM7/27/12
to ASSEMBL...@listserv.uga.edu
This is an automated response as Paul is away from the office until Monday 19th March 2012. If your email requires urgent attention then please contact the Mainframe OS team. Otherwise he will respond when he returns.

Duffy Nightingale

unread,
Jul 30, 2012, 2:56:30 PM7/30/12
to ASSEMBL...@listserv.uga.edu
If you still need help with this, email me at du...@soundsoftware.us and
I'll send you a small sample program. We have been running CICS command
level assembler programs for 22 years with this certain "setup"with no
problems. Oh, at one point we had to change the 1st working storage reg to
be R13 since our CICS command level assembler programs do call sub programs
that do basic work (no system services). Just one reason why I love
programming on IBM mainframe!


Duf
Reply all
Reply to author
Forward
0 new messages