Files
sics/difrac/setiou.f
2000-02-07 10:38:55 +00:00

88 lines
3.5 KiB
Fortran

C-----------------------------------------------------------------------
C
C Subroutine SETIOU
C
C This subroutine sets the unit numbers for the commonly used I/O
C units and the RECL multiplier for direct-access OPEN statements
C for the NRCVAX Structure Package. It is called by all the
C routines of the package and therefore by changing the numbers
C assigned, all the I/O units can be changed for different operating
C systems. The assignments are as follows for VAX VMS :--
C
C IOUNIT Value General System File or General System
C Array Device Symbol
C
C 1 1 Crystal Data File ICD
C 2 2 Reflection Data File IRE
C 3 3 Line-printer Output File LPT
C 4 4 --
C 5 5 Terminal Input ITR
C 6 6 Terminal Output ITP
C 7 7 --
C 8 8 --
C 9 9 --
C 10 10 --
C
C The values of the 5 general symbols are set by the subroutine and
C assigned to the general system symbol.
C
C The 5 other values are set, but are not automatically assigned to a
C symbol generally used by the system. These are units 4,7,8,9 & 10.
C
C To change the values, alter the numbers assigned to IOUNIT(i).
C Ensure that there are no duplicate assignments.
C
C The RECL length multiplier, IBYLEN, is the number used to get the
C RECL parameter of OPEN statements for direct-access files to the
C correct value.
C For the VAX it is 1, i.e. the record-length is specified as
C the number of 4-byte variables/record. For other systems it may be
C necessary to change the length to bytes, in which case the value
C should be 4.
C
C The values in IOUNIT are used in all free form input
C
C-----------------------------------------------------------------------
SUBROUTINE SETIOU (ICD,IRE,LPT,ITR,ITP,IBYLEN)
INCLUDE 'IATSIZ'
COMMON /IOUASS/ IOUNIT(12)
C-----------------------------------------------------------------------
C Setup for the various machines and compilers
C-----------------------------------------------------------------------
IF (MNCODE .EQ. 'VAXVMS') THEN
IBYLEN = 1
ELSE
IBYLEN = 4
ENDIF
C-----------------------------------------------------------------------
C First the 5 general units (for ICD, IRE, LPT, ITR and ITP
C-----------------------------------------------------------------------
IOUNIT( 1) = 1
IOUNIT( 2) = 2
IOUNIT( 3) = 3
IOUNIT( 5) = 5
IOUNIT( 6) = 6
C-----------------------------------------------------------------------
C Now the remaining less general units
C-----------------------------------------------------------------------
IOUNIT( 4) = 4
IOUNIT( 7) = 7
IOUNIT( 8) = 8
IOUNIT( 9) = 9
IOUNIT(10) = 10
C-----------------------------------------------------------------------
C Save the value of IBYLEN
C-----------------------------------------------------------------------
IOUNIT(12) = IBYLEN
C-----------------------------------------------------------------------
C Assign the General System units to save having to do it in each
C system routine
C-----------------------------------------------------------------------
ICD = IOUNIT(1)
IRE = IOUNIT(2)
LPT = IOUNIT(3)
ITR = IOUNIT(5)
ITP = IOUNIT(6)
RETURN
END