.MCALL .MODULE .MODULE ICHCPY,VERSION=04,COMMENT=,IDENT=No,LIB=Yes ; Copyright (c) 1998 by Mentec, Inc., Nashua, NH. ; All rights reserved ; ; This software is furnished under a license for use only on a ; single computer system and may be copied only with the ; inclusion of the above copyright notice. This software, or ; any other copies thereof, may not be provided or otherwise ; made available to any other person except for use on such ; system and to one who agrees to these license terms. Title ; to and ownership of the software shall at all times remain ; in Mentec, Inc. ; ; The information in this document is subject to change without ; notice and should not be construed as a commitment by Digital ; Equipment Corporation, or Mentec, Inc. ; ; Digital and Mentec assume no responsibility for the use or ; reliability of its software on equipment which is not supplied ; by Digital or Mentec, and listed in the Software Product ; Description. .SBTTL Module Declarations .NLIST .ENABL LC .DSABL GBL .NLIST CND .LIST ; ++ ; FACILITY: ; ; RT-11 System Subroutine Library ; ; ENVIRONMENT: ; ; This routine can be used by any concurrently running job in ; a multi-job environment. It uses "TRAP" to provide error ; processing. ; ; INCLUDE FILES: ; .MCALL .CHCOPY ; CHCOPY programmed request ; ; EXTERNAL REFERENCES: ; .GLOBL $SYSLB ; Include system library work area .GLOBL $ERRP0 ; Entry point to EMT error conversion routine .GLOBL $NXADR ; Entry point to next address routine .GLOBL $NXVAL ; Entry point to next value routine .WEAK $MSARG ; Trap code for missing argument .SBTTL ICHCPY - Fortran-callable Routine ; ++ ; FUNCTIONAL DESCRIPTION: ; ; The ICHCPY routine opens a channel for input, logically connecting ; it to a file that is currently opened by another job for either ; input or output. ; ; CALLING SEQUENCE: ; ; i = ICHCPY( chan, ochan [,jobblk] ) ; ; INPUT PARAMETERS: ; ; R5 - address of ICHCPY's argument block ; ; 0(R5) - argument count of ICHCPY call ; 2(R5) - address of channel number to use to read/write data ; 4(R5) - address of channel number of other job to be copied ; 6(R5) - address of three-word ASCII job name ; ; ; RETURNED FUNCTION VALUE: ; ; 0 - no error doing channel copy ; 1 - specified job does not exist or doesn't have specified channel ; ('ochan') open ; 2 - channel ('chan') is already opened ; ; -- .PSECT SYS$I CHCPY:: ICHCPY:: MOV (R5)+,R4 ; R4(low byte) <- argument count CALL $NXVAL ; Get 'chan' argument BCS ERR ; If CS, error - 'chan' wasn't supplied MOV R0,R3 ; R3 <- channel no. of job to use in .CHCOPY CALL $NXVAL ; Get 'ochan' argument BCS ERR ; If CS, error - 'ochan' wasn't supplied MOV R0,R2 ; R2 <- channel no. of other job CLR R0 ; Default 'jobblk' to 0 - in case it's omitted CALL $NXADR ; Get 'jobblk' argument; it's returned in R0 MOV R0,R1 ; R3 <- address of 'jobblk' (if passed) SUB #6,SP ; Allocate space for CHCOPY's argument block .CHCOPY SP,R3,R2,R1 ; Do channel-copy CALL $ERRP0 ; Get and convert any errors (status in R0) ADD #6,SP ; Purge stack of argument block RETURN ; Return to caller with status in R0 ERR: TRAP $MSARG ; Handle any missing arguments in call RETURN .END