C++********************************************************************* C C INQUIRESYNC.F NEW ROUTINE: JUNE 99 ARDEAN LEITH C ADDED DELAY INPUT AUG 00 ARDEAN LEITH C ADDED VERBOSE MAR 02 ARDEAN LEITH C ADDED VERBOSE MAR 02 ARDEAN LEITH C ISECMAXT < 0 JAN 08 ARDEAN LEITH C C ********************************************************************** C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM. AUTHOR: J.FRANK * C=* Copyright (C) 1985-2007 Health Research Inc. * C=* * C=* HEALTH RESEARCH INCORPORATED (HRI), * C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455. * C=* * C=* Email: spider@wadsworth.org * C=* * C=* This program is free software; you can redistribute it and/or * C=* modify it under the terms of the GNU General Public License as * C=* published by the Free Software Foundation; either version 2 of the * C=* License, or (at your option) any later version. * C=* * C=* This program is distributed in the hope that it will be useful, * C=* but WITHOUT ANY WARRANTY; without even the implied warranty of * C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * C=* General Public License for more details. * C=* * C=* You should have received a copy of the GNU General Public License * C=* along with this program; if not, write to the * C=* Free Software Foundation, Inc., * C=* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * C=* * C ********************************************************************** C C INQUIRESYNC DETERMINES IF A FILE EXISTS. IF NOT, WAITS TILL IT C EXISTS C C--********************************************************************* SUBROUTINE INQUIRESYNC(GONE) INCLUDE 'CMBLOCK.INC' INCLUDE 'CMLIMIT.INC' COMMON BUF(1) CHARACTER(LEN=MAXNAM) :: FILNAM LOGICAL :: EX,ISOPEN,GONE IWAITED = 0 IF (GONE) THEN CALL FILERD(FILNAM,NLET,DATEXC,'WAIT FOR DISAPPEARANCE OF~9', & IRTFLG) ELSE CALL FILERD(FILNAM,NLET,DATEXC, & 'WAIT FOR EXISTANCE OF~9',IRTFLG) ENDIF IF (IRTFLG .NE. 0) RETURN 5 IDELAY = 1 ISECMAX = 9999999 CALL RDPRIS(IDELAY, ISECMAXT, NOT_USED, & 'DELAY INTERVAL AND MAXIMUM WAIT (<0 --> NO ERROR)',IRTFLG) IF (IRTFLG .EQ. -1) GOTO 5 IF (IRTFLG .NE. 0) RETURN ISECMAX = IABS(ISECMAXT) C FIND IF FILE EXISTS, (CAN EVEN BE A STACKED FILE) 10 CALL INQUIREIF1(33,FILNAM,BUF,640000,EX,ISOPEN,LUNOP, & INLNED,IMGNUM,IRTFLG) IF ((GONE .AND. EX) .OR. ((.NOT. GONE) .AND. (.NOT. EX))) THEN C WAIT AWHILE AND CHECK AGAIN IF (IWAITED .GT. ISECMAX) THEN IF (ISECMAXT .GE. 0) THEN CALL ERRT(102,'IQ SYNC -- WAIT TIME EXCEEDED',ISECMAX) ELSE WRITE(NOUT,*)'IQ SYNC -- WAIT TIME EXCEEDED:',ISECMAX IF (NDAT .NE. NOUT) & WRITE(NOUT,*)'IQ SYNC -- WAIT TIME EXCEEDED',ISECMAX CALL REG_SET_NSEL(1,1,FLOAT(IWAITED), & 0.0, 0.0, 0.0, 0.0,IRTFLG) ENDIF RETURN ENDIF #if defined(SP_IBMSP3) CALL sleep_(IDELAY) #else CALL SLEEP(IDELAY) #endif IWAITED = IWAITED + IDELAY GOTO 10 ENDIF IF (GONE) THEN WRITE(NOUT,90) IWAITED,FILNAM 90 FORMAT(' WAITED: ',I9,' SECONDS FOR DISAPPEARANCE OF: ',A) ELSE WRITE(NOUT,91) IWAITED,FILNAM 91 FORMAT(' WAITED: ',I9,' SECONDS FOR CREATION OF: ',A) ENDIF IF (VERBOSE) WRITE(NOUT,*) ' ' CALL REG_SET_NSEL(1,1,FLOAT(IWAITED),0.0, 0.0, 0.0, 0.0,IRTFLG) RETURN END