SPL,L,O,M 
!     NAME:   TR..
!     SOURCE: 92067-18210 
!     RELOC:  92067-16185 
!     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) "92067-16185 REV.1903 790403"
! 
!     MODIFIED: 780413 TO USE TRANS FILE SECURITY CODES (GLM) 
!               780421 FOR SESSION MONITOR CARTRIDGE SEARCH OVERRIDE (BL) 
!               780630 TO ALLOW TRANSFER FILE FLUSH (GAA) 
! 
!     LE GRAND TR ROUTINE 
! 
       LET OPEN.,                           \FILE OPEN OR FAKE OPEN 
           READF,                           \READ RECORD
           IER.,                            \CHECK ERROR (IN FM.CM) 
           EE..,                            \FMGR EXIT ROUTINE
           GLOBS                            \SET UP GLOBALS 
              BE SUBROUTINE,EXTERNAL
! 
       LET P.TR,                            \TRANSFER STACK POINTER 
           CAMS.,                           \TRANSFER STACK 
           CAM.I,                           \COMMAND INPUT DCB
           .E.R.,                           \ERROR CODE 
           ACTV.,                           \ACTIVE JOB POINTER 
           N.OPL,                           \SUB-PARAMETER STORAGE
           S.CAP,                           \9P - SESSION CAPABILITY
           OVRD.                            \CARTRIDGE SEARCH OVERRIDE
              BE INTEGER,EXTERNAL 
! 
      LET FM.AB,                            \IN FMGR MAIN 
          ABX..                             \ 
             BE LABEL,EXTERNAL
! 
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. 
      IF S.CAP THEN                         \IF IN SESSION, 
         OVRD._OVRD. AND 137777K            !CLEAR OVRD IN CASE OF ERROR
      IFNOT $NFA THEN [$NFA_$NFA-1;         \MAKE UNIFORM BACK UP 
         IF P.TR-12 < @CAMS. THEN [         \IF UNDERFLOW,
            ERR_10;RETURN]]                 !MAKE IT AN ERROR 
      IF $NFA < 0 THEN [                    \IF WE ARE GOING BACK*780413* 
         DECR_6*($NFA-1);                   \NBR OF WORDS TO POP
         IF DECR > 0 THEN                   \HANDLE OVERFLOW
            [PTR_@CAMS.;GO TO FLUSH];       \ 
BADFILE: PTR_P.TR+DECR;                     \PULL GOODIES FROM
         IF PTR < @CAMS. THEN PTR_@CAMS.;   \IF TOO FAR, GO TO FIRST
FLUSH:   RC_$([CR_[NFI_PTR+1]+3]+2);        \SET REST OF STACK
         IF PTR+6 < ACTV. THEN GO TO ABX..; \IF TOO FAR, ABORT JOB *780419* 
         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     *780413* 
            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  ,401K)          !OPEN NEW INPUT FILE. 
      IF .E.R.< 0 THEN[                     \IF ERROR AND HERE THEN SV>3
         IF S.CAP THEN                      \IF IN SESSION, 
            OVRD._OVRD. AND 137777K;        \BETTER RESET OVERRIDE
         N.OPL,$NFA_0;DECR_ -6;GO TO BADFILE] !RE-OPEN ORIGINAL 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$ 
                                                                                                                                      