SUBROUTINE CDPEF ( * * outputs * : APERT, PEFF, DPEFF, NPTS, : STATUS) * * Module Number: * * Module Name: * * Keyphrase: * ---------- * Read the table containing polarization efficiencies * * Description: * ------------ * Get the polarizations efficiencies of all 16 apertures of the HSP polarimetry * detector. * * FORTRAN Name: CDPEF.FOR * * Keywords of Accessed Files and Tables: * -------------------------------------- * Name I/O Description / Comments * * keyword input from PAR file: * * 'pol_eff' I SDAS table containing polarization * efficiencies * Column names in POL_EFF: * * 'APER_NAME' I aperture name * 'PEFF' I polarization efficiency * 'PEFF_ERR' I polarization efficiency's error * * Subroutines Called: * ------------------- * CDBS: * CDTIN * SDAS: * UCLGST, UTRGTR, UTRGTT, UTTCLO, UMSPUT * OTHERS: * None * * History: * -------- * Version Date Author Description * 1 07-15-86 J.-C. Hsu Design and coding * 2 10-05-87 J.-C. Hsu F77 standard * 3 01-05-89 J.-C. Hsu error propagation *------------------------------------------------------------------------------- * *== output: * --aperture names CHARACTER*(*) APERT(1) * --polarization efficiency REAL PEFF(1), * --polarization efficiency's error : DPEFF(1) * --number of entries of the polarization * --efficiency table INTEGER NPTS, * --error status : STATUS * *== local: * --loop index INTEGER I, J, * --number of rows and columns : NROWS, NCOLS, * --error status : STAT(10), STATOK, * --table pointer and column ID : TP, COLIDN(10) LOGICAL NULMSK(10) CHARACTER*5 CHAR5 * --column names CHARACTER*16 COLNAM(10) * --table name CHARACTER*128 TBNAME * --error message context CHARACTER*130 CONTXT, MESS *=========================begin hsp.inc========================================= * --status return code INTEGER OK, ERRNUM(20) INTEGER DEST, PRIO DATA OK /0/ DATA ERRNUM /701, 702, 703, 704, 705, 706, 707, 708, 709, 710, : 711, 712, 713, 714, 715, 716, 717, 718, 719, 720/ * --message destination and priority DATA DEST, PRIO /1, 0/ *=========================end hsp.inc=========================================== *------------------------------------------------------------------------------- * * initialization * NPTS = 0 * * define column names * NCOLS = 3 COLNAM(1) = 'APER_NAME' COLNAM(2) = 'PEFF' COLNAM(3) = 'PEFF_ERR' * * read the polarization efficiency table name from CL parameter * CALL UCLGST ('pol_eff', TBNAME, STATUS) IF (STATUS .NE. OK) THEN CONTXT = 'cannot get polarization efficiency table ' : // 'keyword name' GO TO 999 END IF * * set up polarization efficiency table * CALL CDTIN (TBNAME, COLNAM, NCOLS, TP, COLIDN, NROWS, STATUS) IF (STATUS .NE. OK) THEN CONTXT = 'cannot set up the polarization efficiency table' GO TO 999 END IF * * read the polarization efficiency table * DO 30 I = 1, NROWS CALL UTRGTT (TP, COLIDN(1), 1, I, : APERT(I), NULMSK(1), STAT(1)) CALL UTRGTR (TP, COLIDN(2), 1, I, : PEFF(I), NULMSK(2), STAT(2)) CALL UTRGTR (TP, COLIDN(3), 1, I, : DPEFF(I), NULMSK(3), STAT(3)) * STATOK = ABS(STAT(1) - OK) + ABS(STAT(2) - OK) + : ABS(STAT(3) - OK) + OK * DO 10 J = 1, NCOLS IF (NULMSK(J)) THEN STATOK = ERRNUM(1) GO TO 20 END IF 10 CONTINUE * 20 IF (STATOK .NE. OK) THEN WRITE (CHAR5, '(I5)') I CONTXT = 'cannot read data entry #' // CHAR5 CALL UMSPUT (CONTXT, DEST, PRIO, STATOK) ELSE NPTS = NPTS + 1 APERT(NPTS) = APERT(I) PEFF(NPTS) = PEFF(I) DPEFF(NPTS) = DPEFF(I) END IF 30 CONTINUE * * close table * CALL UTTCLO (TP, STATUS) IF (STATUS .NE. OK) THEN CONTXT = 'cannot close the polarization efficiency table' GO TO 999 END IF * STATUS = OK GO TO 1000 * * write error message * 999 MESS = 'CDPEF: ' // CONTXT CALL UMSPUT (MESS, DEST, PRIO, STATOK) * 1000 RETURN END