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$