* Last processed by NICE on 12-Jun-2000 15:51:00 * Customized for : IEEE, LINUX, UNIX, MOTIF, F77 SUBROUTINE GET_CRITERIA (ERROR) C---------------------------------------------------------------------- C PSC Define the selection criteria C---------------------------------------------------------------------- INCLUDE 'inc:pi.inc' INCLUDE 'psc.inc' INCLUDE 'psccrit.inc' LOGICAL ERROR INTEGER WANTED_FOR_RATIO(2) INTEGER I,L,LENC LOGICAL CHECK_LRS,CHECK_BOX,USERAD CHARACTER*16 CBOX(4), COOSYS * Data INCLUDE 'inc:constant.inc' * CALL GILDAS_OPEN * * File names * Input table defaults to full catalog CALL GILDAS_CHAR('IN_TABLE$',INTABLE) L = LENC(INTABLE) * ceci est un vilain PATCH (TASK acceptant maintenant * la commande TASK\FILE qui fait un LIB$FIND_FILE * et va donc rajouter un directory a "*" IF (INTABLE(L:L).EQ.'*') INTABLE = 'IRAS_PSC_EQU' CALL SIC_GTLGTR(INTABLE) * CALL GILDAS_LOGI('L_OUT$',LISTOUT,1) IF (LISTOUT) THEN CALL GILDAS_CHAR('OUT_LIST$',OUTLIST) ENDIF * CALL GILDAS_LOGI('T_OUT$',WRITEOUT,1) IF (WRITEOUT) THEN CALL GILDAS_CHAR('OUT_TABLE$',OUTTABLE) ENDIF * * Limits of box CALL GILDAS_LOGI('CHECK_BOX$',CHECK_BOX,1) IF (CHECK_BOX) THEN CALL GILDAS_LOGI('USE_RADIAN$',USERAD,1) CALL GILDAS_CHAR('COOSYS$',COOSYS) CALL GILDAS_CHARN ('BOX$',CBOX,4) DO I=1,4 CALL SIC_SEXA(CBOX(I),LENC(CBOX(I)),BOX(I),ERROR) ENDDO IF (COOSYS(1:1).EQ.'E') THEN TYPEC = TYPE_EQ CHECK_EQU = .TRUE. CHECK_NSTDBOX = .FALSE. IF (.NOT.USERAD) THEN BOX(1) = BOX(1)*PI/12. BOX(2) = BOX(2)*PI/12. BOX(3) = BOX(3)*PI/180. BOX(4) = BOX(4)*PI/180. ENDIF RMIN = BOX(1) RMAX = BOX(2) DMIN = BOX(3) DMAX = BOX(4) ELSEIF (COOSYS(1:1).EQ.'G') THEN TYPEC = TYPE_GA CHECK_EQU = .TRUE. ! For the time being... CHECK_NSTDBOX = .TRUE. IF (.NOT.USERAD) THEN BOX(1) = BOX(1)*PI/180. BOX(2) = BOX(2)*PI/180. BOX(3) = BOX(3)*PI/180. BOX(4) = BOX(4)*PI/180. ENDIF RMIN = -100. RMAX = 100. DMIN = -100. DMAX = 100. ELSE WRITE(6,*) 'F-PSC, Invalid or unsupported', $ ' Coordinate system.' ERROR = .TRUE. RETURN ENDIF ELSE RMIN = -100. RMAX = 100. DMIN = -100. DMAX = 100. ENDIF * CALL GILDAS_LOGI('CHECK_QUAL$',CHECK_QUAL,1) IF (CHECK_QUAL) THEN CALL GILDAS_INTE('QUALITY$',WANTED_QUAL,4) ENDIF * CALL GILDAS_LOGI('CHECK_ID$',CHECK_IDENT,1) IF (CHECK_IDENT) THEN CALL GILDAS_INTE('WANTED_ID$',WANTED_IDENT(1),1) MAXID = 1 IF (WANTED_IDENT(1).EQ.5) WANTED_IDENT(1) = 0 * I = 1 * DO WHILE (WANTED_IDENT(I).GE.0 .AND. I.LT.6) * MAXID = MAXID+1 * IF (WANTED_IDENT(I).EQ.5) WANTED_IDENT(I) = 0 * I = I+1 * ENDDO ENDIF * CALL GILDAS_LOGI('CHECK_CATA$',CHECK_CATA,1) IF (CHECK_CATA) THEN CALL GILDAS_INTE('WANTED_CATA$',WANTED_CATA,1) ENDIF * CALL GILDAS_LOGI('CHECK_RATIO$',CHECK_RATIO,1) IF (CHECK_RATIO) THEN WANTED_FOR_RATIO(1) = 0 WANTED_FOR_RATIO(2) = 0 CALL GILDAS_INTE('BANDS$',WANTED_FOR_RATIO,2) DO I=1,2 IF (WANTED_FOR_RATIO(I).EQ.12) THEN WANTED_FOR_RATIO(I)=1 ELSEIF (WANTED_FOR_RATIO(I).EQ.25) THEN WANTED_FOR_RATIO(I)=2 ELSEIF (WANTED_FOR_RATIO(I).EQ.60) THEN WANTED_FOR_RATIO(I)=3 ELSEIF (WANTED_FOR_RATIO(I).EQ.100) THEN WANTED_FOR_RATIO(I)=4 ELSE WRITE(6,*) 'E-PSCTRI, Bad IRAS band name' GOTO 99 ENDIF ENDDO FOR_RATIO1 = WANTED_FOR_RATIO(1) FOR_RATIO2 = WANTED_FOR_RATIO(2) CALL GILDAS_REAL('MIN_RATIO$',MIN_RATIO,1) CALL GILDAS_REAL('MAX_RATIO$',MAX_RATIO,1) IF (MIN_RATIO.GT.MAX_RATIO) THEN WRITE(6,*) 'Maximum ratio is smaller than mimimum' GOTO 99 ENDIF ENDIF * CALL GILDAS_LOGI('CHECK_LUM$',CHECK_LUMINOSITY,1) IF (CHECK_LUMINOSITY) THEN CALL GILDAS_REAL('MIN_LUM$',MIN_LUMINOSITY,1) ENDIF * CALL GILDAS_LOGI('CHECK_FLUX$',CHECK_FLUX,1) IF (CHECK_FLUX) THEN CALL GILDAS_INTE ('MIN_BAND$',NUM_FLUX,1) IF (NUM_FLUX.EQ.12) THEN NUM_FLUX=1 ELSEIF (NUM_FLUX.EQ.25) THEN NUM_FLUX=2 ELSEIF (NUM_FLUX.EQ.60) THEN NUM_FLUX=3 ELSEIF (NUM_FLUX.EQ.100) THEN NUM_FLUX=4 ELSE WRITE(6,*) 'E-PSCTRI, Bad IRAS band name',NUM_FLUX GOTO 99 ENDIF CALL GILDAS_REAL('MIN_FLUX$',MIN_FLUX,1) ENDIF * CALL GILDAS_LOGI('CHECK_LRS$',CHECK_LRS,1) IF (CHECK_LRS) THEN CALL GILDAS_CHAR('LRS_TYPE$',LRS_TYPE) IF (LRS_TYPE(1:2).EQ.'**'.OR.LRS_TYPE(1:2).EQ.'*') THEN CHECK_LRS_0 = .TRUE. CHECK_LRS_1 = .FALSE. CHECK_LRS_2 = .FALSE. ELSEIF (LRS_TYPE(2:2).EQ.'*') THEN CHECK_LRS_0 = .FALSE. CHECK_LRS_1 = .TRUE. CHECK_LRS_2 = .FALSE. ELSE CHECK_LRS_0 = .FALSE. CHECK_LRS_1 = .FALSE. CHECK_LRS_2 = .TRUE. ENDIF ELSE CHECK_LRS_0 = .FALSE. CHECK_LRS_1 = .FALSE. CHECK_LRS_2 = .FALSE. ENDIF CHECK_RA = CHECK_EQU.AND.(RMIN.GE.0.OR.RMAX.LE.2*PI) CHECK_TABLE = CHECK_RATIO .OR. CHECK_BOX .OR. CHECK_LUMINOSITY $.OR. CHECK_FLUX CHECK_FILE = CHECK_QUAL .OR. CHECK_IDENT .OR. CHECK_LRS_0 $.OR. CHECK_LRS_1 .OR. CHECK_LRS_2 .OR. CHECK_CATA SELECTION = CHECK_RA .OR. CHECK_TABLE .OR. CHECK_FILE IF (CHECK_FILE .AND. TAPE) THEN CALL GILDAS_CHAR('TAPE$',TAPE_DRIVE) ENDIF RETURN 99 ERROR = .TRUE. END