SPL,M,O,C,L 
!     NAME:   VE..  
!     SOURCE: 92064-18051 
!     RELOC:  92064-16017 
!     PGMR:   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 VE..(7) " 92064-16017  REV.1650  760807" 
! 
! 
! 
! 
! 
      LET OPEN.,CONV.,READF,WRITF,XEXTL  BE SUBROUTINE,EXTERNAL 
      LET IFBRK BE FUNCTION,EXTERNAL
      LET IDCB1,IDCB2,IDCB3,I.BUF,O.BUF BE INTEGER,EXTERNAL 
      LET TMP.,N.OPL BE INTEGER,EXTERNAL
      LET AB.FM BE LABEL,EXTERNAL 
      LET VE..  BE SUBROUTINE 
      LET WEOF BE SUBROUTINE,DIRECT 
! 
! 
      LET EOFM(2) BE INTEGER
      LET VECOM(8) BE INTEGER 
! 
      INITIALIZE  ST.    TO "ST"
      INITIALIZE  GO.   TO "GO" 
      INITIALIZE  LU.   TO "LU" 
      INITIALIZE  EQ.BL  TO "= "
      INITIALIZE  EOFM   TO "EOF "
      INITIALIZE  VECOM  TO "VERIFY COMPLETE "
! 
!  DEFINE RECORD COUNT AND ERROR TOTAL MESSAGE
! 
      LET RCNT(2) BE INTEGER
      LET RECM(7) BE INTEGER
      INITIALIZE RECM    TO     " RECORDS READ "
      LET EROUT(2) BE INTEGER 
      LET EREM(10) BE INTEGER 
      INITIALIZE EREM     TO    " RECORDS WITH ERRORS" !
! 
! 
! 
      LET A.Z  BE CONSTANT (40400K) 
      LET B.Z  BE CONSTANT (41000K) 
! 
 VE..: SUBROUTINE (NO,LIS,ER) GLOBAL
! 
!  SET ADDRESSES OF ON PARMS
! 
!  :VE,F1,F2,OPTION,#FILES,TYPE 
! 
! 
      OP5_[OP4_[OP4T_[OP3_[NA2_[NA2T_[NA1_ @LIS+1]+3]+1]+4]+3]+1]+4 
! 
! 
!  SETUP VERIFY OPTION FLAGS
! 
!      CHECK FOR ABORT/NO-ABORT ON VERIFY ERROR 
! 
      IF $OP3=ST. THEN [HT_1;GO TO O4]   !ABORT ON ERROR? 
      IF ($OP3=GO.) OR ($OP3=0) THEN HT_0,\  DEFAULT=DON'T ABORT
                                ELSE [ER_56;RETURN] !BAD PARM RETURN
! 
!  FETCH # FILES AND SET IT NEGATIVE
!          NEGATIVE REQUEST NOT ALLOWED 
! 
O4:    IF $(OP5-1)=3 THEN GO TO RJCT  !  DON'T ALLOW ASCII
       IFNOT [TEMP_ $OP5]  THEN  FCNT_ -1 ,\   DEFAULT USES 1 
                        ELSE [IF [FCNT_ -TEMP] > 0 THEN[\ COMPLEMENT
RJCT:                                   ER_56;RETURN]]  !REJECT 
! 
! 
!   CHECK FOR TYPE--AS/BI 
!       THIS IS NEEDED WHEN VERIFYING VIA LU'S
! 
!  IF NUMERIC OR DEFAULT USE VALUE
! 
      IFNOT $OP4T=3  THEN [TYPE_$OP4;GO TO PONG]
!  IF ASCII USE 0 
      IF [TEMP_$OP4 AND 177400K] =A.Z THEN\ 
                 [TYPE_0;GO TO PONG]
! 
!  IF BINARY USE 1OO (SET M BIT)
! 
      IF TEMP=B.Z THEN TYPE_100K,\
                  ELSE [ER_56;RETURN] 
! 
! 
!  ALLOW POS/NEG AND SET DEFAULTS FOR LU'S
! 
! 
! 
PONG:    $NA1,LU1_ [IF $NA1  < 0  THEN - $NA1,\  !IF NEG SET IT POS 
             ELSE [ IFNOT $NA1 THEN 4,\    !IF DEFAULT USE 4(LCTU)
               ELSE  $NA1 ]]
! 
! CHECK 2ND PARM
! 
      $NA2,LU2_ [IF $NA2 < 0 THEN - $NA2,\ IF NEG SET IT POS
              ELSE [ IFNOT $NA2 THEN 5,\   ! IF DEFAULT USE 5(RCTU) 
                  ELSE $NA2 ]]
! 
! 
!  OPEN FILE1,FILE2,LIST
! 
      CALL OPEN.(IDCB1,$NA1,N.OPL,TYPE)!  OPEN FILE1
      CALL OPEN.(IDCB2,$NA2,$(@N.OPL+5),TYPE) !  OPEN FILE2 
      CALL OPEN.(IDCB3,TMP.,(@TMP.+3),0)!   OPEN LIST 
! 
!   SET UP NAME OF FILE OR LU IN CASE OF VERIFY ERROR 
! 
!  FIRST FILE WORK
! 
      IF LIS=3 THEN GO TO CHNA2  !IF NAME,CONTINUE
      $NA1_LU.        !SET "LU" INTO NAME BUF 
      $(NA1+1)_EQ.BL      !SET  "= " INTO NAME BUF
      CONV.(LU1,$(NA1+2),2)  !CONVERT LU AND SET INTO BUF 
! 
!  2ND FILE WORK
! 
CHNA2: IF $NA2T=3 THEN GO TO GORP  !IF NAME, CONTINUE 
      $NA2_LU.     !SET "LU" IN BUF 
      $(NA2+1)_EQ.BL     ! SET "= " IN BUF
      CONV.(LU2,$(NA2+2),2)     ! CONVERT LU AND SET INTO BUF 
! 
!  RESET COUNTERS 
! 
GORP: ERRCT,RC_0
! 
NEXT: IF IFBRK THEN [ER_0;GO TO AB.FM]  !CHECK BREAK FLAG 
! 
      CALL READF(IDCB1,ER,I.BUF,128,LEN) !READ RECORD FILE 1
        IF ER THEN RETURN 
! 
      CALL READF(IDCB2,ER,O.BUF,128,LEN2) !READ RECORD FILE 2 
        IF ER THEN RETURN 
! 
      IF LEN#LEN2 THEN [RC_RC+1;GO TO ERROR]
      IF LEN= -1 THEN GO TO EOF 
      RC_RC+1    !BUMP RECORD COUNT 
! 
!  DO VERIFY OPERATION
! 
!  SET UP POINTERS
! 
      TEMP_@I.BUF 
      TEMP2_@O.BUF
      COUN_ -LEN
! 
! 
MATCH: IF $TEMP# $TEMP2 THEN GO TO ERROR
      TEMP_TEMP+1 
      TEMP2_TEMP2+1 
      IF [COUN_ COUN+1] THEN GO TO MATCH
! 
!  THIS RECORD OK--CONTINUE 
! 
      GO TO NEXT
! 
! 
! 
EOF: WEOF   !!WRITE "EOF" ON LIST DEV. 
      IF [FCNT_ FCNT+1] THEN GO TO NEXT 
      CALL WRITF(IDCB3,ER,VECOM,8) !WRITE "VERIFY COMPLETE" 
      CONV.(RC,$(@RCNT+1),4)  !SET # RECORDS READ 
      CONV.(ERRCT,$(@EROUT+1),4)  ! SET TOTAL ERRORS FOUND
      WRITF(IDCB3,.E.R,RCNT,21) 
      RETURN
! 
! 
! 
ERROR: ERRCT_ERRCT+1  !BUMP ERROR COUNT 
      IFNOT HT THEN [IF LEN= -1 OR LEN2= -1 THEN\ 
                   GO TO EOF,\
                      ELSE GO TO NEXT]
       CALL WRITF(IDCB3,ER,$NA1,3) !WRITE FILE NAME/LU
      IF LEN = -1 THEN [WEOF;GO TO URRP]
      CALL XEXTL(LEN,@I.BUF,RC) !GO LIST RECORD 
! 
URRP: CALL WRITF(IDCB3,ER,$NA2,3)   !WRITE 2ND NAME LU
      IF LEN2= -1 THEN [WEOF;RETURN]
      CALL XEXTL(LEN2,@O.BUF,RC)   !LIST 2ND BAD RECORD 
! 
! 
      RETURN
      END 
! 
! 
WEOF: SUBROUTINE DIRECT 
      CALL WRITF(IDCB3,ER,EOFM,2) 
      RETURN
      END 
      END 
      END$
                                                                                                                                                                                                                                