IDENT CALLRTN
ENTRY CALLRTN
SYSCOM B1
CALLRTN TITLE CALLRTN - CALL TASK(S) WITH RETURN.
*COMMENT CALLRTN - CALL TASK(S) WITH RETURN.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CALLRTN SPACE 4,10
***** CALLRTN - CALL TASK(S) WITH RETURN.
*
* W. E. MARTIN. 79/03/06.
*
* CALLRTN IS AN INTERFACE ROUTINE FOR COBOL AND FORTRAN
* TASKS. IT ALLOWS THEM TO CALL TASK(S) WITH RETURN.
SPACE 4,20
*** COBOL/FORTRAN CALL FORMAT.
*
* COBOL -
*
* ENTER CALLRTN USING TASK1,TASK2,...,TASKN.
*
* FORTRAN EXTENDED -
*
* CALL CALLRTN (TASK1,TASK2,...,TASKN).
*
* WHERE - TASKI = PARAMETER WHOSE VALUE IS A 1 TO 7 CHARACTER
* TASK NAME. TASKI MUST BE LEFT JUSTIFIED, WITH
* BINARY-ZERO OR BLANK-FILL.
*
* NOTE - IF MORE THAN FIVE (5) TASK NAMES ARE ENCOUNTERED,
* THEN THE TASK WILL BE ABORTED WITH A PARAMETER LIST
* STRUCTURE ERROR.
SPACE 4
* COMMON TEXTS.
*CALL COMKMAC
*CALL COMSPRD
SPACE 4,25
** CALLRTN - CALL TASK(S) WITH RETURN.
*
* ENTRY (A1) = ADDRESS OF PARAMETER LIST.
* (X1) = 42/,18/ADDRESS OF FIRST PARAMETER.
*
* EXIT (A0) SAME AS ON ENTRY.
*
* USES A - 1, 2, 5, 6.
* X - 0, 1, 2, 5, 6.
* B - 1, 7.
*
* CALLS ZFN.
*
* MACROS ARGERR, CALLRTN.
*
* NOTES IF MORE THAN FIVE (5) TASK NAMES ARE ENCOUNTERED,
* THEN THE TASK WILL BE ABORTED WITH A PARAMETER
* LIST STRUCTURE ERROR.
* (A0) MUST BE THE SAME ON EXIT AS UPON ENTRY.
VFD 42/0LCALLRTN,18/CALLRTN
CALLRTN SUBR ENTRY/EXIT
SA2 X1+ READ TASK NAME
SB1 1
ZR X1,CAL3 IF CALLED WITH NULL LIST
BX1 X2
RJ ZFN ZERO FILL NAME
BX6 X1
SA5 A1+B1
SA6 CALA STORE TASK NAME
ZR X5,CAL2 IF NO TASK LIST
SB7 4 SET TASK LIST LIMIT
CAL1 SA2 X5+ READ TASK NAME
SA5 A5+B1 READ NEXT ADDRESS
BX1 X2 STORE TASK NAME
ZR X2,CAL2 IF END OF PARAMETER LIST
RJ ZFN ZERO FILL NAME
SB7 B7-B1 DECREMENT LIST ENTRY COUNT
BX6 X1
SA6 A6+1
LT B7,CAL3 IF LIST OVERFLOW - ABORT TASK
NZ X5,CAL1 IF PARAMETER LIST NOT EXHAUSTED
CAL2 BX6 X6-X6 TERMINATE LIST
SA6 A6+B1
CALLRTN CALA ENTER REQUEST
EQ CALLRTNX RETURN
* PROCESS ARGUMENT ERROR BY ABORTING PROGRAM.
CAL3 SA1 CALLRTN READ CALLING ADDRESS
MX0 30
LX1 29-59
SA2 X1-1
BX6 -X0*X2
SA6 CALA
ARGERR A6 EXIT TO EXECUTIVE
CALA BSSZ 6 TASK NAME LIST
SPACE 4
* COMMON DECK.
*CALL COMKZFN
SPACE 4
END