.MCALL .MODULE .MODULE ICLOSE,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 ; ; CALLABLE ENTRIES: ; ; CLOSEC or ICLOSE ( these two names refer to the same entry point ) ; ; ENVIRONMENT: ; ; This routine can be used by any job running in a single-job ; or multi-job environment, but cannot be called from a ; completion or interrupt service routine. It uses "TRAP" to ; provide error processing. ; ; INCLUDE FILES: ; ; SYSMAC.SML ; RT-11 system macro library. .MCALL .CLOSE ; CLOSE programmed request. ; ; EXTERNAL REFERENCES: ; .GLOBL $ERRM0 ; Entry point to EMT error conversion routine. .GLOBL $NXADR ; Entry point to next address routine. .GLOBL $NXVAL ; Entry point to next value routine. .GLOBL $SYSLB ; Include system library work area. .WEAK $MSARG ; Trap code for missing argument .SBTTL ICLOSE - Fortran-callable Routine ; ++ ; FUNCTIONAL DESCRIPTION: ; ; The CLOSEC routine terminates activity on the specified channel and ; frees it for use in another operation. ; ; CALLING SEQUENCE: ; ; CALL CLOSEC( chan [,i] ) ; ; i = ICLOSE( chan ) ; ; INPUT PARAMETERS: ; ; R5 - address of CLOSEC's argument block ; ; 0(R5) - argument count of CLOSEC call ; 2(R5) - address of number of channel to close ; 4(R5) - address of variable CLOSEC returns close status in ; ; OUTPUT PARAMETERS: ; ; R0 - channel close status ; i - variable CLOSEC returns close status in ; ; ROUTINE VALUE: ; ; 0 - no error closing channel ; -4 - protected file with the same name already exists on device ; ; -- .PSECT SYS$I CLOSEC:: ICLOSE:: ; Entry point to CLOSEC/ICLOSE routine. MOV (R5)+,R4 ; R4 (low byte) contains arg count CALL $NXVAL ; Get 'chan' argument; it's returned in R0 BCS 20$ ; If CS, error - 'chan' wasn't supplied MOV R0,R3 ; R3 <- number of channel to close; .CLOSE R3 ; Close caller-specified channel. CALL $ERRM0 ; Get and convert any errors (status in R0). MOV R0,R3 ; R3 <- channel close status. CALL $NXADR ; Get -> error return variable BCS 10$ ; If CS, optional error return variable not ; supplied by caller - just return to caller. MOV R3,@R0 ; Otherwise, store close status in variable. 10$: MOV R3,R0 ; R0 <- close status (functions use R0). RETURN 20$: TRAP $MSARG ; Handle any missing arguments in call RETURN .END