SPL,L,O,M,C 
!     NAME:   LI..  
!     SOURCE: 92064-18047 
!     RELOC:  92064-16017 
!     PGMR:   G.A.A.
!     MOD:    G.L.M.
! 
!  ***************************************************************
!  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977.  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 LI..(7) " 92064-16017  REV.1650  761010" 
! 
! 
!     LI.. IS THE RTE FMGR FILE LIST MODULE 
!          IT IS ENTERED ON COMMAND 
! 
!     LI,NAMR,TY
! 
!        WHERE: 
! 
! 
!         NAMR    IS THE NAME REFERENCE INCLUDING 
!                 SECURITY CODE AND DISC ID 
! 
!         TY     IS THE LISTING TYPE AND IS ASCII:
! 
!             S OR A OR NULL SOURCE WITH LINE NUMBERS 
!             B              BINARY DUMP
!             D              DIRECTORY HEAD ONLY
! 
! 
!     EACH LISTING WILL BE PROCEEDED BY THE HEAD: 
! 
!      NAMEL T=XXXXX IS ON PK XXXXX USING XXXX BLKS R=XXXX
! 
! 
! 
! 
! 
!     S FORMAT IS A BLANK FOLLOWED BY 4 DIGIT 
!        LINE NUMBER FOLLOWED BY TWO BLANKS FOLLOWED
!       BY THE RECORD.
! 
!     B FORMAT IS : 
!       A)THE RECORD HEAD: REC# XXXXX 
!       B)N LINES FORMATED AS FOLLOWS 
!         8 5-DIGIT OCTAL NUMBERS SEPERATED BY BLANKS 
!           AND FOLLOWED BY A "*" FOLLOWED BY THE 
!           16 ASCII CHARACTERS THE DIGITS REP. 
!            NON-PRINTING CHARACTERS WILL BE FILLED 
!            WITH BLANKS
! 
!     D FORMAT IS THE HEAD ONLY 
! 
! 
! 
!     DEFINE EXTERNALS
! 
      LET .TTY BE FUNCTION,EXTERNAL 
      LET JER.          BE SUBROUTINE,EXTERNAL,DIRECT 
! 
      LET IDCB1,IDCB3,BUF.,.E.R ,\
          TMP.,N.OPL        BE INTEGER,EXTERNAL 
      LET OPEN.,LOCF,WRITF,READF,EXEC,\ 
                CONV.,JER. \
                            BE SUBROUTINE,EXTERNAL
! 
!     DEFINE INTERNAL ROUTINES
! 
      LET SETA,WRIT,SPACE,DOIT,TCDE BE SUBROUTINE,DIRECT
      LET XEXTL BE SUBROUTINE,GLOBAL
! 
!     DEFINE  CONSTANTS 
!                                        HL 
      LET BL.T      BE CONSTANT (20124K)! T 
      LET EQ.BL     BE CONSTANT (36440K)!=
      LET BL.I      BE CONSTANT (20111K)! I 
      LET S.BL      BE CONSTANT (51440K)!S
      LET O.N       BE CONSTANT (47516K)!ON 
      LET BL.C      BE CONSTANT (20103K)! C 
      LET R.BL      BE CONSTANT (51040K)!R
      LET BL.L      BE CONSTANT (20114K)! L 
      LET U.BL      BE CONSTANT (52440K)!U
      LET BL.U      BE CONSTANT (20125K)! U 
      LET S.I       BE CONSTANT (51511K)!SI 
      LET N.G       BE CONSTANT (47107K)!NG 
      LET BL.B      BE CONSTANT (20102K)! B 
      LET L.K       BE CONSTANT (46113K)!LK 
      LET R.EQ      BE CONSTANT (51075K)!R= 
      LET A.BL      BE CONSTANT (40440K)!A
      LET B.BL      BE CONSTANT (41040K)!B
      LET D.BL      BE CONSTANT (42040K)!D
      LET R.E       BE CONSTANT (51105K)!RE 
      LET C.NO      BE CONSTANT (41443K)!C# 
      LET DST       BE CONSTANT (25052K)!** 
! 
!     DEFINE BUFFER SET UP
! 
      LET LSTBF(2),LNNO,BLWD,I.BUF(128) BE INTEGER,GLOBAL 
LI..: SUBROUTINE(NOC,LIS ,ER) GLOBAL
! 
      OPFL_401K   !SET DEFAULT OPEN  OPTION 
      NUL_0    !PRESET  NULL PRAM FLAG
      TYPF_($([LIS1_@LIS +1]+4) AND 177400K)+40K
      IF TYPF=A.BL THEN GO TO STYP    !CHECK FOR
      IF TYPF=40K THEN[NUL_1;GO TO STYP]!LEGAL
      IF TYPF=D.BL THEN GO TO TYPOK   !OPTIONS
      IF TYPF=B.BL THEN[OPFL_311K;GO TO TYPOK]!NULL,A,S,B,D 
      IF TYPF#S.BL THEN [ER_56;RETURN]!NO; RETURN 56
! 
STYP: TYPF_S.BL                       !FOURCE NULL,ATOS 
! 
TYPOK:OPLS_ @TMP.+3              !GET LIST UNIT OP LIST 
! 
      CALL OPEN.(IDCB3,TMP.,$OPLS, 0) !OPEN LIST FILE 
! 
      CALL OPEN.(IDCB1,$LIS1,N.OPL,OPFL) !OPEN FILE TO BE LISTED
! 
      CALL LOCF(IDCB1,.E.R ,LP,LP,LP,LP,FLU,FTYP) 
      IFNOT NUL THEN GO TO OK !IF NULL THEN CHOSE THE RIGHT OPTION
          IF $(@IDCB1+3) AND 100K  THEN[TYPF_ B.BL; GO TO OK] 
! 
OK:   TCDE          !GO GET LIST DEVICE TYPE CODED
      P36_[P3_@LIS +4]+33  !SET UP LIST ADDRESSES 
! 
      FOR T_ P3 TO P36 DO[$T_20040K] ! BLANK THE BUFFER 
      P_P3-1
      SETA(BL.T)     !SET BLANK T 
      SETA(EQ.BL)    !SET = BLANK 
      P_P+2 
      CONV.(FTYP,$P,5) !SET TYPE
      SETA(BL.I)     !SET BLANK I 
      SETA(S.BL)     !SET S BLANK 
      SETA (O.N)     !SET ON
! 
      DO SETA(BL.L);SETA(U.BL);T_FLU ;N_2 
! 
! 
      P_P + N/2 
      CONV.(T,$P,N) 
      N_13
! 
WRHD: TB_[BF_[IF TYPF=S.BL THEN @LSTBF,ELSE @BUF.]]+1 
      $BF_20040K                         !BLANK FIRST WD
      P_LIS1
      FOR T_TB TO TB+N DO [$T_$P;P_P+1] !MOVE LINE
      IF LIS #3 THEN[$([P_TB+1]+1)_DST;\IF FACK FILE REPLACE NAME 
                        $P_DST;$TB_DST]! WITH "******"
      WRIT   !   WRITE THE HEAD 
! 
      IF TYPF=D.BL THEN GOTO EOF  !DONE IF HEAD ONLY
      SPACE  !SPACE A LINE
      RC_1
NEXT: READF(IDCB1,.E.R ,I.BUF,128,L) ! READ RECORD
! 
      JER.                         !CHECK FOR ERRORS
      IF L <0 THEN GO TO EOF       !SOFT EOF? 
      N_L+3 
      IF TYPF=S.BL THEN[CONV.(RC,LNNO,4);BLWD_20040K;\
           WRIT;RC_RC+1;GO TO NEXT] !JUST LISTING - GO WRIT 
! 
      F_@I.BUF
      CALL DOIT 
      GO TO NEXT
! 
! 
! 
EOF:  WRITF(IDCB3,E.R,$BF,-1) !WRITE EOF
      JER.
      RETURN
      END 
! 
! 
DOIT: SUBROUTINE DIRECT 
      P_BF          !INITILIZE BUFFER POINTER 
      SETA(R.E)      ! SET UP 
      SETA(C.NO)     !   REC# XXXXX 
      SETA(20040K)
      P_P+2 
      CONV.(RC,$P,5)! SET NUMBER
      SPACE         !SPACE A LINE 
      N_5           !WRITE THE RECORD NUMBER
      WRIT          ! 
      SPACE         !SPACE A LINE 
! 
NEXTL:IFNOT L THEN [RC_RC+1;RETURN] !IF NO DATA GET NEXT
      P_[ST_[WP,T_TB]+27]+1   !INITILIZE POINTERS 
      REPEAT 36 TIMES DO[ $T_20040K; T_T+1] 
      UP_ -1        !SET UPPER FLAG TRUE
      REPEAT 8 TIMES DO THRU PTSTP
      IF[T2_ [T_$F]AND 77400K]>57400K THEN GOTO BLANK 
      IF T2>17777K THEN GOTO OKUP 
! 
BLANK:T_ (T AND 177K)+20000K
! 
OKUP: IF [T2_($F AND 177K)]<140K THEN[IF  T2> 37K THEN\ 
         GO TO OKLOW] 
! 
      T_ (T AND  77400K) +40K 
! 
OKLOW:DO[ $P_T AND 77577K;P_P+1]
! 
      T2_   [T_$F-<1] AND 1 
! 
      $WP_[IF UP THEN (T2-<8)+([T_T-<3] AND 7)+30060K,\ 
                ELSE T2 + 20060K] 
! 
      REPEAT 2 TIMES DO[ \
      $[WP_WP+1]_(([T_T-<3] AND 7)-<8)+\
                  ([T_T-<3] AND 7)+ 30060K] 
! 
      IF UP THEN GOTO PTSTP 
! 
      $[WP_WP+1]_(((T-<3) AND 7)-<8)+30040K 
! 
PTSTP:DO[WP_WP+1;UP_NOT UP;F_F+1;IFNOT [L_L-1] THEN\
          GO TO PREPR]
! 
! 
PREPR:IF $[P_P-1]=20040K THEN GO TO PREPR  !FIND LAST 
                                           !NON BLANK 
      N_  P-TB+1      !PRINT LENGTH 
! 
      $ST_  $ST +12K  !SET THE STAR SEPERATOR 
! 
WRTIT:WRIT            !TRANSMIT THE LINE
! 
      GOTO NEXTL      !GO DO NEXT LINE
! 
! 
      END 
! 
! 
SETA:  SUBROUTINE(PRA)DIRECT !STEP P AND SET PRA IN P INDIRECT
      $[P_P+1]_PRA
      RETURN
      END 
! 
! 
WRIT: SUBROUTINE DIRECT!WRITE ON LIST  BUFFER AT BF IF LP 
                 !OR TB IF NOT LP WITH LENGTH N+LP
                 !IF TTY -LIMIT LENGTH TO 72. 
      IF TTY THEN[IF N>36 THEN N_36]
      WRITF(IDCB3,.E.R ,$(TB-LP),N+LP)
      JER.
      RETURN
      END 
! 
! 
SPACE:SUBROUTINE DIRECT    !SPACE THE LIST DEVICE 
      N_1           !SET LENGTH TO ONE WORD 
      DO[T_$TB;$TB_ 20040K]!SET BLANK IN BUFFER 
      WRIT          !WRIT BLANK LINE
      $TB_T         !RESTORE OLD CONTENTS 
      RETURN        !RETURN 
      END 
! 
! 
TCDE: SUBROUTINE DIRECT 
      CALL LOCF(IDCB3,.E.R ,LP,LP,LP,LP,LLU) !GET LIST LU 
! 
      CALL EXEC(13,LLU,EQT5,DUM,SPC)!GET LIST LU TYPE CODED 
! 
! 
!    SET LINE PRINTER FLAG
! 
! 
!     CHECK FOR DVR12 OR GREATER
! 
      IF[EQT5_EQT5 AND 37400K] > 4400K THEN [ LP_1;GO TO TT]
     LP_[IF EQT5=2400K AND (SPC#0) THEN 1, ELSE 0 ] 
TT:   TTY_.TTY(LLU) 
      RETURN
      END 
! 
! 
XEXTL:SUBROUTINE(XLEN,XBUF,XRC)  GLOBAL 
      TB_[BF_ @BUF. ] +1
      L_XLEN
      F_XBUF
      RC_XRC
      TCDE  !GET LIST DEVICE TYPE CODED 
      CALL DOIT 
      SPACE 
      SPACE 
      RETURN
      END 
      END 
      END$
                                                                                                                                              