SPL,L,O,M 
!     NAME:   TR..
!     SOURCE: 92070-18035 
!     RELOC:  92070-16035 
!     PGMR:   G.A.A., A.M.G 
! 
!  ***************************************************************
!  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS     *
!  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
!  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
!  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
!  ***************************************************************
! 
      NAME TR..(8) "  92070-1X035  REV.1941  790712"
! 
!     LE GRAND TR ROUTINE 
! 
!  EXTERNAL SUBROUTINES 
      LET EX..      BE SUBROUTINE,EXTERNAL  !FMGR EXIT ROUTINE
      LET GLOBS     BE SUBROUTINE,EXTERNAL  !SET UP GLOBALS 
      LET IER.      BE SUBROUTINE,EXTERNAL,DIRECT !CHECK ERROR (FM.CM)
      LET OPEN.     BE SUBROUTINE,EXTERNAL  !FILE OPEN OR FAKE OPEN 
      LET READF     BE SUBROUTINE,EXTERNAL  !READ RECORD
!  EXTERNAL INTEGERS
      LET .E.R      BE INTEGER,EXTERNAL     !GLOBAL ERROR CODE
      LET CAM.I     BE INTEGER,EXTERNAL     !COMMAND INPUT DCB
      LET CAMS.     BE INTEGER,EXTERNAL     !TRANSFER STACK 
      LET N.OPL     BE INTEGER,EXTERNAL     !SUB-PARAMETER STORAGE
      LET P.TR      BE INTEGER,EXTERNAL     !TRANSFER STACK POINTER 
! 
! 
TR..: SUBROUTINE(N,LIS,ERR) GLOBAL          !TRANSFER SUBROUTINE
       DCB14_[DCB2_@CAM.I+2]+12             !ADDRESS OF RECORD COUNT, TYPE
! 
      PLIST_[NFI,NFA_@LIS+1]+3              !GET PARAMETER ADDRESSES. 
       IFNOT $NFA THEN $NFA_ -1             !MAKE UNIFORM BACK UP 
      IF $NFA < 0 THEN [                    \IF WE ARE GOING BACK 
BADFILE: PTR_P.TR+6*($NFA-1);               \PULL GOODIES FROM
         IF PTR < @CAMS. THEN PTR _ @CAMS.; \IF TOO FAR, GO TO FIRST
         RC_ $([CR_[NFI_PTR+1]+3]+2);       \SET REST OF STACK
         IF N.OPL < 0 THEN RC_RC+N.OPL;     \IF BACK SPACE REQUESTED
         IF RC < 0 THEN RC_0;               \SET IT UP
         RS_$[P.TR_PTR]],                   \LOOKS GOOD LETS BUY IT 
       ELSE [                               \GOING FORWARD
         RC_0;                              \SET POINTERS FOR RETURN
         CR,PTR_@N.OPL;                     \AND THE CALL 
         IF P.TR-@CAMS. > 48 THEN [         \IF TOO DEEP
            ERR _ 13; RETURN]               \TAKE GAS.
       ]                                    !LOOKS GOOD , LETS DO IT
      CALL GLOBS(N-1,$PLIST,1) ?            \SET UP GLOBALS.
          [ERR _ 48;  RETURN]               !ERROR IN GLOBAL SET. 
      OPEN.(CAM.I,$NFI,$CR  ,411K)          !OPEN NEW INPUT FILE. 
      IF .E.R < 0 THEN[                     \IF ERROR AND HERE THEN SV>3
         N.OPL,$NFA_0;GO TO BADFILE]        !MUST REOPEN ORGIONAL FILE
       $PTR_RS                              !RESET RECORD COUNT 
      IF RC THEN [                          \IF NEEDED. 
        IF $DCB2 THEN[                      \(MUST NOT BE TYPE ZERO)
         UNTIL $DCB14 = RC DO [             \READ AS MANY RECORDS 
            READF(CAM.I,.E.R ,C.BUF,1);     \AS NECESSARY FOR 
            IER.]]]                         !POSITIONING. 
      RETURN
      END 
! 
      END 
     END$ 
                                                                                        