FTN LOGICAL FUNCTION LUREQ(NODE,ICNTL,LU,IERR) & ,92069-16061 REV.1912 790205 INTEGER NODE,ICNTL,LU(145),IERR 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-18114 C RELOC: 92069-16060 C C C****************************************************************: C C C C C C ABSTRACT: C C LUREQ LOCKS AN LU WHEN THE LU IS A LOCAL DEVICE. C LUREQ IS TRUE WHEN THE UNIT IS A NON-INTERACTIVE DEVICE OR IS A C LOCAL FILE. C C CALLING SEQUENCE: C C CALL LUREQ(NODE,ICNTL,LU,IERR) C C WHERE: C C NODE C IS THE DISTRIBUTED NODE NUMBER. WHEN THE NODE IS THE C LOCAL NODE, THEN NODE SHOULD EQUAL -1. C C ICNTL C IS THE CONTROL WORD C 0 INDICATES TO UNLOCK THE LU C 1 INDICATES TO LOCK IT C C LU C IS THE LU/DCB STRUCTURE. C C WHEN THE FIRST WORD OF LU IS GREATER THAN 0, C THE LIST UNIT IS CONSIDERED TO BE A DEVICE. C C WHEN THE FIRST WORD OF LU IS -1, THEN THE LIST C UNIT IS CONSIDERED TO BE A FILE AND WORDS 2-145 C MUST BE THE DCB. C C IERR C IS THE ERROR INDICATOR C 0 INDICATES NO ERROR C -1 INDICATES ERROR C C C C C C C C C C C C LOGICAL IFTTY INTEGER NUM(6),LOCKED(12) C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ C$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ DATA LOCKED/2H Q,2HUE,2HRY,2H W,2HAI,2HTI,2HNG,2H O, & 2HN ,2HLU,2H ,2HXX/ C NO COMMON IS NECESSARY C C C C C C C C C BEGIN C IERR = 0 LUREQ = .FALSE. C C IS THE REQUEST DIRECTED AT A FILE? C IF(LU .EQ. -1) GOTO 10 C C IS THIS A REMOTE NODE C IF(NODE .NE. -1) GOTO 20 C C IS THE LOCAL DEVICE INTERACTIVE? C IF(IFTTY(LU)) GOTO 20 C C THIS IS A NON-INTERACTIVE LOCAL DEVICE, SO LOCK IT C IF(ICNTL .NE. 1) GOTO 5 CALL LURQ(140000B+ICNTL,LU,1) GOTO 7010 8000 CALL ABREG(IA,IB) IF(IA .EQ. 0) GOTO 10 CALL CITA(IAND(LU,77B),NUM) LOCKED(12) = NUM(3) CALL QRIO(2,1,LOCKED,12) C C WAIT ON LU C 3 CONTINUE CALL EXEC(12,0,2,0,-10) CALL LURQ(140000B+ICNTL,LU,1) GOTO 7010 8010 CALL ABREG(IA,IB) IF(IA .NE. 0)3,10 C C UNLOCK LU C 5 CALL LURQ(040000B+ICNTL,LU,1) GOTO 7010 10 LUREQ = .TRUE. C C RETURN C 20 CONTINUE RETURN C C C C C C C ERROR PROCESSOR C 7010 CONTINUE IERR = -1 GOTO 20 END