CALLRTN 
          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 
