mirror of
https://github.com/moshix/mvs.git
synced 2026-04-28 13:07:35 +00:00
parameter passing example
This commit is contained in:
67
parameter.asm
Normal file
67
parameter.asm
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
//HERC01A JOB (BAL),
|
||||||
|
// 'PARAMETER CALLING ',
|
||||||
|
// CLASS=A,
|
||||||
|
// MSGCLASS=X,
|
||||||
|
// TIME=1440,
|
||||||
|
// MSGLEVEL=(1,1)
|
||||||
|
//ASMCLG EXEC ASMFCG,PARM.ASM=(OBJ,NODECK),MAC1='SYS2.MACLIB',
|
||||||
|
// REGION.GO=428K,PARM.GO='/12345'
|
||||||
|
//ASM.SYSLIB DD
|
||||||
|
// DD DISP=SHR,DSN=SYS1.MACLIB
|
||||||
|
//ASM.SYSIN DD *
|
||||||
|
PRINT NOGEN
|
||||||
|
RDPARM CSECT
|
||||||
|
STM R14,R12,12(R13) SAVE CALLERS REGISTERS
|
||||||
|
BALR R12,0 COPY BASE REG
|
||||||
|
USING *,R12 TELL ASSEMBLER BASE REG
|
||||||
|
ST R13,SAVEAREA+4 SAVE CALLER SAP
|
||||||
|
LA R13,SAVEAREA POINT TO ORU SAVE AREA
|
||||||
|
*
|
||||||
|
L R2,0(,R1) GET PARAM FIELD ADDR
|
||||||
|
LH R3,0(,R2) GET LENGTH OF PARM FIELD
|
||||||
|
LA 2,2(,R2) ADDRS OF FIRST BYTE OF FIELD
|
||||||
|
*
|
||||||
|
* PRINT ON CONSOLE LEGNTH OF PARAMETER FIELD
|
||||||
|
CVD R3,NUMDEC FROM BINARY TO DECIMAL
|
||||||
|
UNPK UNDEC,NUMDEC+1 MAKE HUMAN READABLE
|
||||||
|
MVC WTOC+20(2),UNDEC COPY WORKLOAD INTO NEXT INST
|
||||||
|
WTOC WTO 'PARM LENGTH '
|
||||||
|
*
|
||||||
|
LR R6,R3 COPY INTO R6
|
||||||
|
LTR R3,R3 WAS A PARAM SPECIFIED
|
||||||
|
BZ NOPARM
|
||||||
|
* SO WE DO HAVE A PARAM
|
||||||
|
LA R4,WTOL+15 ADDR OF WTO WITH PARMS
|
||||||
|
MVC 0(R6,R4),0(R2) COPY WORKLOAD INTO NEXT INST
|
||||||
|
WTOL WTO 'PARMS: '
|
||||||
|
B CLOSE
|
||||||
|
NOPARM DS 0H
|
||||||
|
WTO 'NO PARAMETERS GIVEN BY CALLER'
|
||||||
|
CLOSE L R13,SAVEAREA+4 RELOAD CALLERS SA
|
||||||
|
LM R14,R12,12(R13) CALLERS REGS
|
||||||
|
SR R15,R15 RESET TO RC TO ZERO
|
||||||
|
BR R14 RETURN TO MAMA
|
||||||
|
*
|
||||||
|
LTORG
|
||||||
|
SAVEAREA DS 18F
|
||||||
|
NUMDEC DS D
|
||||||
|
UNDEC DS PL4
|
||||||
|
* EQUATES
|
||||||
|
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
|
||||||
|
END
|
||||||
|
/*
|
||||||
|
//
|
||||||
Reference in New Issue
Block a user