*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS
*-----------------------------------------------------------------------
      SUBROUTINE RPNGET
      INTEGER   IPARA(*)
      LOGICAL   LPARA(*), LCHREQ
      REAL      RPARA(*)
      CHARACTER CPARA(*)*80
      CHARACTER CPFIX*(*), CPS(*)*8, CPL(*)*40

      LOGICAL   LFIRST

      EXTERNAL  LCHREQ

      DATA      LFIRST / .TRUE. /

      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (INTEGER)
*-----------------------------------------------------------------------
      ENTRY RTIGET(CPFIX, CPS, IPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 10 N = 1,  MAX
         CALL RTIXFL(CPFIX, CPS(N), IPARA(N))
         CALL RTIENV(CPFIX, CPS(N), IPARA(N))
         CALL RTIOPT(CPFIX, CPS(N), IPARA(N))
 10   CONTINUE

      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (LOGICAL)
*-----------------------------------------------------------------------
      ENTRY RTLGET(CPFIX, CPS, LPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 20 N = 1, MAX
         CALL RTLXFL(CPFIX, CPS(N), LPARA(N))
         CALL RTLENV(CPFIX, CPS(N), LPARA(N))
         CALL RTLOPT(CPFIX, CPS(N), LPARA(N))
 20   CONTINUE

      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (REAL)
*-----------------------------------------------------------------------
      ENTRY RTRGET(CPFIX, CPS, RPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 30 N = 1, MAX
         CALL RTRXFL(CPFIX, CPS(N), RPARA(N))
         CALL RTRENV(CPFIX, CPS(N), RPARA(N))
         CALL RTROPT(CPFIX, CPS(N), RPARA(N))
 30   CONTINUE

      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (CHARACTER)
*-----------------------------------------------------------------------
      ENTRY RTCGET(CPFIX, CPS, CPARA, MAX)

      IF (LFIRST) THEN
         IF (CPFIX.NE.'GL:') CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 40 N = 1, MAX
         IF (CPFIX.NE.'GL:') CALL RTCXFL(CPFIX, CPS(N), CPARA(N))
         CALL RTCENV(CPFIX, CPS(N), CPARA(N))
         CALL RTCOPT(CPFIX, CPS(N), CPARA(N))
   40 CONTINUE

      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (INTEGER)
*-----------------------------------------------------------------------
      ENTRY RLIGET(CPL, IPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 50 N = 1, MAX
         CALL RLIXFL(CPL(N), IPARA(N))
         CALL RLIENV(CPL(N), IPARA(N))
         CALL RLIOPT(CPL(N), IPARA(N))
 50   CONTINUE
   
      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (LOGICAL)
*-----------------------------------------------------------------------
      ENTRY RLLGET(CPL, LPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 60 N = 1, MAX
         CALL RLLXFL(CPL(N), LPARA(N))
         CALL RLLENV(CPL(N), LPARA(N))
         CALL RLLOPT(CPL(N), LPARA(N))
 60   CONTINUE
   
      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (REAL)
*-----------------------------------------------------------------------
      ENTRY RLRGET(CPL, RPARA, MAX)

      IF (LFIRST) THEN
         CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 70 N = 1, MAX
         CALL RLRXFL(CPL(N), RPARA(N))
         CALL RLRENV(CPL(N), RPARA(N))
         CALL RLROPT(CPL(N), RPARA(N))
 70   CONTINUE
   
      RETURN
*-----------------------------------------------------------------------
*     GET EXTERNAL PARAMETERS (CHARACTER)
*-----------------------------------------------------------------------
      ENTRY RLCGET(CPL, CPARA, MAX)

      IF (LFIRST) THEN
         IF (LCHREQ(CPL(1:LENC(CPL)),'DCLRC')) CALL RPNXFL
         LFIRST = .FALSE.
      ENDIF

      DO 80 N = 1, MAX
       IF (LCHREQ(CPL(1:LENC(CPL)),'DCLRC')) THEN 
          CALL RLCXFL(CPL(N), CPARA(N))
       ENDIF
       CALL RLCENV(CPL(N), CPARA(N))
       CALL RLCOPT(CPL(N), CPARA(N))
 80   CONTINUE

      RETURN

      END
