+++ /dev/null
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1 1996/02/15 17:49:42 mclareni
-* Kernlib
-*
-*
-#include "kerngen/pilot.h"
- SUBROUTINE CENVIR (CHIN,NINP, CHEX,JLP,JRP, IFLEX)
-C
-C CERN PROGLIB# M432 CENVIR .VERSION KERNFOR 4.41 950228
-C ORIG. 07/12/93, JZ
-C
-C- Copy CHIN(1:NINP) to CHEX(JLP:JRP) substituting environment
-C- variables designated by ${name}; on machines running UNIX
-C- the form $name is also recognised.
-C- For undefined variables the original text is either skipped
-C- or copied if IFLEX is zero or not zero.
-C- Return NFSLAT bit 1 undefined env.v. encountered
-C- 2 syntax error
-C- 3 not enough space to translate the complete
-C- line
-C- NGSLAT = 0 if the copy is identical to the original
-C- 1 if changed
-
- COMMON /SLATE/ NDSLAT,NESLAT,NFSLAT,NGSLAT, DUMMY(36)
- CHARACTER CHIN*512, CHEX*512
-
-
- NNIN = NINP
- NEX = JLP - 1
- NNEX = JRP
-#if !defined(CERNLIB_QS_UNIX)
- LIM = NNIN - 3
-#endif
-#if defined(CERNLIB_QS_UNIX)
- LIM = NNIN - 1
-#endif
-
- MISS = 0
- NFAI = 0
- NOSP = 0
- MODI = 0
-
-C-- look for the start of ${SYMBOL}
-
- NIN = 0
- 21 JS = NIN
- 22 IF (JS.LT.LIM) THEN
- JS = ICFIND ('$', CHIN,JS+1,LIM)
- IF (NGSLAT.NE.0) GO TO 23
- ENDIF
-
- JS = NNIN + 1
- NGSLAT = 0
-
-C-- copy leading text
-
- 23 N = JS-1 - NIN
- IF (N.GT.0) THEN
- NN = MIN (N, NNEX-NEX)
- IF (NN.LE.0) GO TO 28
- CHEX(NEX+1:NEX+NN) = CHIN(NIN+1:NIN+NN)
- NEX = NEX + NN
- IF (NN.NE.N) GO TO 28
- ENDIF
-
- IF (NGSLAT.EQ.0) GO TO 29
- NIN = JS - 1
-
-C-- get env. variable name
-
- JA = JS + 1
- IF (CHIN(JA:JA).NE.'{') THEN
-#if !defined(CERNLIB_QS_UNIX)
- GO TO 22
-#endif
-#if defined(CERNLIB_QS_UNIX)
- JB = ICFIND (' ', CHIN,JA,NNIN)
- IF (JB.EQ.JA) GO TO 22
- JE = ICNUMU (CHIN,JA,JB-1) - 1
- N = NDSLAT
- IF (N.EQ.0) GO TO 22
-#endif
- ELSE
- JA = JA + 1
- JE = ICFIND ('}', CHIN,JA,NNIN)
- IF (NGSLAT.EQ.0) GO TO 27
- N = JE - JA
- IF (N.EQ.0) GO TO 27
- ENDIF
-
-C-- copy env. variable value
-
- CALL GETENVF (CHIN(JA:JA+N-1), CHEX(NEX+1:NNEX))
- IF (NDSLAT.EQ.0) GO TO 26
- NEX = NEX + NDSLAT
- MODI = 1
- NIN = JE
- GO TO 21
-
-C-- environment variable not defined
-
- 26 MISS = 1
- IF (IFLEX.NE.0) GO TO 22
- MODI = 1
- NIN = JE
- GO TO 21
-
-C-- syntax problems
-
- 27 NFAI = 1
- GO TO 22
-
-C-- CHEX overflows
-
- 28 NOSP = 1
-
- 29 NESLAT = NEX + 1
- NDSLAT = NESLAT - JLP
- NFSLAT = MISS + 2*NFAI + 4*NOSP
- NGSLAT = MODI
- RETURN
- END