FTN FUNCTION QRIO(ICODE,IFILE,IBUF,IL),92069-16061 REV.1912 781128 INTEGER IFILE(145) C C C***************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS RESERVED C NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR C TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH OUT THE PRIOR C WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C****************************************************************** C C C SOURCE: 92069-18112 C RELOC: 92069-16060 C C C****************************************************************: C C C C C C ABSTRACT: C C QRIO IS A ROUTINE WRITTEN TO REPLACE "REIO". IT ALLOWS QUERY TO C USE LOCAL AND REMOTE FILES WITHOUT DISTRUBING THE QUERY CODE C C QRIO WILL PAD AN ODD BYTE COUNT TO A FILE WITH A BLANK. C C C CALLING SEQUENCE: C C CALL QRIO(ICODE,IFILE,IBUF,IL) C C WHERE: C C ICODE C IS THE OPERAND CODE C 1 INDICATES READ C 2 INDICATES WRITE C C IFILE C IS THE FILE DCB OR LU OF THE DEVICE C WORD 1 = POSITIVE LU AND LU CONTROL C OR, IS NEGETIVE WHICH INDICATES C THAT A DCB IS IN WORDS 2 - 145 C WORD 2-145 = DCB C C C IBUF C IS THE READ/WRITE BUFFER C C IL C IS THE LENGTH C NEGETIVE INDICATES BYTE COUNT C POSITIVE INDICATES WORD COUNT C C C C C C C INTEGER IQRA,IQRB INTEGER IRIO(2) REAL RIO INTEGER ERR1(13),ERR2(18),ERR4(12) INTEGER ERR5(13) C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978 $$$$$$$$$$$$$$$$$$$$$ INTEGER INLU,ITTY,ILP,IDCB,JDCB,XEQ INTEGER DBNAM,DBLEV,DSNAM,DINAM,SELECT,SNAM INTEGER DSNUM,DINUM,PARM,LPARM,ECHO,QSERR INTEGER IMA,IB,IBSZ,SECNO,IEND,ISCAN LOGICAL BREAK INTEGER IPFLAG,IOFLAG,RMOTE LOGICAL BATCH,XQBCH INTEGER PAGCNT,LNCNT INTEGER PAGLEN,COLLIM REAL RRCNT REAL SELT,RSEC INTEGER IPTR REAL RCOUNT INTEGER S,R3,TRKNM,IDILU INTEGER R6 REAL ATOTAL INTEGER LIST,L,T,U INTEGER LEVSTR,LEVLEN INTEGER IBUFF INTEGER SS(7,100) C COMMON INLU(145),ITTY(145),ILP(145),IDCB(145),JDCB(144),XEQ(145) COMMON DBNAM(10),DBLEV(3),DSNAM(3),DINAM(3),SELECT(6),SNAM(3) COMMON DSNUM,DINUM,PARM(40),LPARM,ECHO,QSERR COMMON IMA(37),IB(896),IBSZ,SECNO,IEND,ISCAN COMMON BREAK COMMON IPFLAG,IOFLAG,RMOTE COMMON BATCH,XQBCH COMMON PAGCNT,LNCNT COMMON PAGLEN,COLLIM COMMON RRCNT COMMON SELT(64),RSEC COMMON IPTR COMMON RCOUNT COMMON S(15,50),R3,TRKNM,IDILU COMMON R6 COMMON ATOTAL(6,5) COMMON LIST(101,6),L(7),T(5),U(7,5) COMMON LEVSTR(66,5),LEVLEN(5) COMMON IBUFF(2048) C EQUIVALENCE (S,SS) C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978 $$$$$$$$$$$$$$$$$$$$$ EQUIVALENCE ( RIO,IRIO) EQUIVALENCE (IRIO,IQRA) EQUIVALENCE (IRIO(2),IQRB) DATA ERR1/2H Q,2HUE,2HRY,2H D,2HEV,2HIC,2HE ,2HI/,2HO ,2HAB, & 2HOR,2HTE,2HD / DATA ERR2/2H Q,2HUE,2HRY,2H- ,2HIL,2HLE,2HGA,2HL ,2HI/ & ,2HO ,2HCO,2HNT,2HRO,2HL ,2HOP,2HER,2HAN,2HD / DATA ERR4/2H Q,2HUE,2HRY,2H- ,2HIN,2HPU,2HT ,2HFI,2HLE,2H E, & 2HRR,2HOR/ DATA ERR5/2H Q,2HUE,2HRY,2H- ,2HOU,2HTP,2HUT,2H F,2HIL,2HE , & 2HER,2HRO,2HR / C C C C C C C C C C C C BEGIN C C CHECK TO SEE IF THE INPUT IS A FILE C IF(IFILE .LT. 0) GOTO 10 C C SEE IF THIS IS A REMOTE CALL C IF(RMOTE .EQ. -1) GOTO 2 CALL DEXEC(RMOTE,ICODE+100000B,IFILE,IBUF,IL) GOTO 40 1 GOTO 5 C C MAKE LOCAL DEVICE CALL C 2 CONTINUE CALL REIO(ICODE+100000B,IFILE,IBUF,IL) GOTO 40 5 CALL ABREG(IQRA,IQRB) GOTO 30 C C GET INPUT FROM A FILE C 10 CONTINUE IF(ICODE .NE. 1)GOTO 20 LEN = IL IF(IL .LT. 0)LEN = -(IL+1/2) CALL EREAD(IFILE(2),IQRA,IBUF,LEN,IQRB,DUMY) IF(IQRA .LT. 0) GOTO 70 IF(IL .LT. 0) IQRB = IQRB*2 GOTO 30 C C WRITE TO A FILE C 20 CONTINUE IF(ICODE .NE. 2) GOTO 50 LEN = IL C C PAD ODD WRITE COUNTS WITH A BLANK C IF(IL .GT. 0) GOTO 25 LEN = - LEN/2 IL = -IL IF(IL-LEN*2 .EQ. 0) GOTO 25 LEN = LEN + 1 CALL SPUT(IBUF,IL+1,40B) C C WRITE THE RECORD C 25 CONTINUE CALL EWRIT(IFILE(2),IQRA,IBUF,LEN,DUMY) IF(IQRA .LT. 0) GOTO 70 IQRB= IL C C EXIT C 30 CONTINUE QRIO = RIO RETURN C C C C ERROR PROCESSOR C C 40 CONTINUE IQRA = -1 CALL REIO(2,1,ERR1,13) GOTO 100 C C OUTPUT "ILLEGAL I/O CONTROL OPERAND" C 50 CONTINUE CALL REIO(2,1,ERR2,18) GOTO 100 C C OUTPUT "INPUT FILE ERROR" C 70 CALL REIO(2,1,ERR4,12) GOTO 90 C C OUTPUT "OUTPUT FILE ERROR" C 80 CALL REIO(2,1,ERR5,13) C C OUTPUT FMP ERROR C 90 CALL FMERR(IQRA,1) C C END QUERY C 100 CONTINUE SNAM(2) = 2H16 CALL LOAD(SNAM) END