There are four input files which are required:
%kr_test {cgg1_file} {rules_file} {values_file} [instrument] e.g: %kr_test kr_test.fmt kr_test.rules kr_test.dcx or %kr_test cgg1_keyword.fmt keyword_rules.lis o4v403rhq.dvx STI
Inputs
Initial examples of all the input files can be found in the
share/dat CVS library.
!-------------------------------------------------------------------- ! ! KEYWORD NAMES FILE ! ! ! This file defines the order and size of the fields in the keyword ! names file. It is assumed that this file will be resident ! in the opus_definitions_dir along with other resource and data files. ! ! Note that the filename and the offset and size of any of the fields ! may change; but the names of the fields on the left of the "=" must ! remain. ! !-------------------------------------------------------------------- ! REVISION HISTORY !-------------------------------------------------------------------- ! MOD PR ! LEVEL DATE NUMBER User Description ! ----- -------- ------ ------ ------------------------------------- ! 000 05/09/97 34299 Rose Created ! !-------------------------------------------------------------------- !FILENAME = OPUS_DBMS_LOAD:cgg1_keyword.dat FILENAME = kr_test_cgg1.dat INSTRUMENT.OFFSET = 0 !Name of the instrument INSTRUMENT.SIZE = 3 !INSTRUMENT/GROUP/ORDER must be first fields GROUP.OFFSET = 4 !Name of the group of keywords GROUP.SIZE = 3 ORDER.OFFSET = 14 !Order in which keyword appears in header ORDER.SIZE = 3 !within this group. NAME.OFFSET = 18 !Keyword name. FITS limits these to NAME.SIZE = 8 !eight characters. TYPE.OFFSET = 27 !L1, I4, R4, R8, Cnn, CHR, COM=comment TYPE.SIZE = 3 !nn=number of characters, CHR=C20 DEFAULT.OFFSET = 31 !default value. note that strings are left DEFAULT.SIZE = 20 !justified, numeric is right justified. COMMENT.OFFSET = 52 !any string. COMMENT.SIZE = 68 OPTIONAL.OFFSET = 127 !Y/N: if N, then if keyword is blank, OPTIONAL.SIZE = 1 !omit the keyword from the header
! ! Test undelimited substring (This is OK) ALL BIASDFIL {BIASDFIL(5:)} 1 BIASDFIL = uref$? ! ! Test illegal substring limits ALL DARKFILE {DARKFILE(A:H)} 1 T = T ! ! Test arithmetic with bogus value ( = 12) ALL SURF_V [12+VVV] 1 T = T ! ! Test a null number ALL SURF_U {SURF_V()} 1 T = T ! ! Test a negative index ALL MAG_U {MAG_B(-1)} 1 T = T ! ! Test an illegal number ALL MAG_B {MAG_B(A)} 1 T = T ! ! Test illegal wildcard on condition ALL SURF_B {SURF_R} 1 EXPSTART = {SUN_ALT(*)} ALL SURF_U {SURF_R} 1 MOONANGLE(*) = BLANK ! ! Confused syntax in group notation ALL SURF_R {SURF_B(*:2)} 1 T = T ! ! Missing close parens ALL SURF_V {SURF_U(3:4} 1 T = T ! ! Test negative group number ALL TARGNAME(-4) {ALIAS2} 1 ALIAS2 != BLANK ! ! ...make multiple keys, multiple groups for target_synonym. Need to ! propogate the other keys from group zero too. ! ALL TARGNAME(1) {ALIAS1} 1 ALIAS1 != BLANK ALL TARGNAME(2) {ALIAS2} 1 ALIAS2 != BLANK !
------------- j8a602a1q 2001/07/17 07:17:58 ---------- ------------- file_type WCS, frame 1 ----------------- CRVAL1 = 3.095607457200E+02 / WCS SCI CRVAL2 = 6.150131629327E+01 / WCS SCI CRPIX1 = 2072 / WCS SCI CRPIX2 = 1044 / WCS SCI CD1_1 = -6.92045E-06 / WCS SCI CD1_2 = 1.10248E-05 / WCS SCI CD2_1 = 1.17985E-05 / WCS SCI CD2_2 = 7.85754E-06 / WCS SCI CTYPE1 = RA---TAN / WCS SCI CTYPE2 = DEC--TAN / WCS SCI RA_APER = 3.095607457200E+02 / WCS SCI DEC_APER= 6.150131629327E+01 / WCS SCI MIR_REVR= T / WCS SCI ORIENTAT= 54.5219 / WCS SCI LTV1 = 24 / WCS SCI LTV2 = 20 / WCS SCI LTM1_1 = 1 / WCS SCI LTM2_2 = 1 / WCS SCI PA_APER = 5.452186203003E+01 / WCS SCI CENTERA1= 2073 / WCS SCI CENTERA2= 1035 / WCS SCI SIZAXIS1= 4144 / WCS SCI SIZAXIS2= 2068 / WCS SCI FILTNAM1= F122M / WCS SCI TARKEY1 = target key 1 / WCS SCI TARKEY2 = say something / WCS SCI TARKEY4 = nice / WCS SCI EXPSTART= 51000.0 / WCS SCI ATODSAT = 10000 / WCS SCI TARGNAME= Big Star / WCS SCI TARGCAT = Top Notch Category / WCS SCI ASN_MTYP= PRODUCE GALORE / WCS SCI ALIAS1 = Bigger than yours / WCS SCI ALIAS2 = BIGGEST / WCS SCI MT_LV1_1= Moving Target Level 1 / WCS SCI MT_LV2_3= MT LEVEL 2_3 / WCS SCI INSTRUME= WFPC2 / WCS SCI BIASDFIL= uref$biasfile.ref / WCS SCI OBSET_ID= Jim / WCS SCI OBSNUM = 4q / WCS SCI ------------- file_type WCS, frame 2 ----------------- CRVAL1 = 3.095118070833E+02 / WCS SCI CRVAL2 = 6.148479997017E+01 / WCS SCI CRPIX1 = 2072 / WCS SCI CRPIX2 = 1024 / WCS SCI CD1_1 = -7.16513E-06 / WCS SCI CD1_2 = 1.14511E-05 / WCS SCI CD2_1 = 1.18425E-05 / WCS SCI CD2_2 = 8.04081E-06 / WCS SCI CTYPE1 = RA---TAN / WCS SCI CTYPE2 = DEC--TAN / WCS SCI RA_APER = 3.095607457200E+02 / WCS SCI DEC_APER= 6.150131629327E+01 / WCS SCI MIR_REVR= T / WCS SCI ORIENTAT= 54.924 / WCS SCI LTV1 = 24 / WCS SCI LTV2 = 0 / WCS SCI LTM1_1 = 1 / WCS SCI LTM2_2 = 1 / WCS SCI PA_APER = 5.492397689819E+01 / WCS SCI CENTERA1= 2073 / WCS SCI CENTERA2= 1035 / WCS SCI SIZAXIS1= 4144 / WCS SCI SIZAXIS2= 2068 / WCS SCI ATODSAT = 20000 / WCS SCI ------------- file_type WCS, frame 3 ----------------- ATODSAT = 30000 / WCS SCI
!------------------------------------------------------------------------ !Interpretation of error messages and test output: !------------------------------------------------------------------------ ! ! Test illegal substring limits ALL DARKFILE {DARKFILE(A:H)} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Unable to convert substring DARKFILE(A:H) (1) ! ! Test a null number ALL SURF_U {SURF_V()} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Unknown syntax SURF_V() (1) ! ! Test a negative index ALL MAG_U {MAG_B(-1)} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Unknown syntax MAG_B(-1) (1) ! ! Test an illegal number ALL MAG_B {MAG_B(A)} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Unknown syntax MAG_B(A) (1) ! ! Test illegal wildcard on condition ALL SURF_B {SURF_R} 1 EXPSTART = {SUN_ALT(*)} 2003239185324-E-ERROR RULE_SKIPPED: No Wildcards on right of compare: SUN_ALT(*) (1) ! ! Test illegal wildcard on condition ALL SURF_U {SURF_R} 1 MOONANGLE(*) = BLANK 2003239185324-E-ERROR RULE_SKIPPED: No Wildcards on left of compare: MOONANGLE(*) (1) ! ! Confused syntax in group notation ALL SURF_R {SURF_B(*:2)} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Unable to convert substring SURF_B(*:2) (1) ! ! Missing close parens ALL SURF_V {SURF_U(3:4} 1 T = T 2003239185324-E-ERROR RULE_SKIPPED: Missing delimeter SURF_U(3:4 (1) ! ! Test negative group number ALL TARGNAME(-4) {ALIAS2} 1 ALIAS2 != BLANK 2003239185324-E-ERROR RULE_SKIPPED: Unknown syntax TARGNAME(-4) (1) 2003239185324-E-ERROR RULE_SKIPPED: unknown group value: ALIAS2 (1) ! ! ...make multiple keys, multiple groups for target_synonym. Need to ! propogate the other keys from group zero too. ! ALL TARGNAME(1) {ALIAS1} 1 ALIAS1 != BLANK ALL TARGNAME(2) {ALIAS2} 1 ALIAS2 != BLANK ! |-keyword number | |-group number | | 1 0 ALIAS1 = Bigger than yours 2 0 ALIAS2 = BIGGEST !.....see TARGNAME below ! ALL ASNTBL LOAD 1 ASN_STAT = COMPLETE ALL ASNTBL IGNORE 2 T = T 3 0 ASNTBL = IGNORE ! ! Copied from kr_test.dcx 4 0 ASN_MTYP = PRODUCE GALORE ! ! No rule for ASN_PROD 5 0 ASN_PROD = ! ! Copied from kr_test.dcx 6 0 ASN_STAT = CGG1_DEFAULT ! ! Copied from kr_test.dcx ! ...note group is correct 7 0 ATODSAT = 10000 7 1 ATODSAT = 20000 7 2 ATODSAT = 30000 ! ! Test undelimited substring (This is OK) ALL BIASDFIL {BIASDFIL(5:)} 1 BIASDFIL = uref$? ! ....from kr_test.dcx: ! BIASDFIL= uref$biasfile.ref / WCS SCI ! 8 0 BIASDFIL = biasfile.ref ! ! Test illegal substring limits (see error above) ALL DARKFILE {DARKFILE(A:H)} 1 T = T 9 0 DARKFILE = ! ! Test group(i) keyword copied to group(0) keyword ALL DIAG01 {ATODSAT(0)} 1 T = T ALL DIAG02 {ATODSAT(1)} 1 T = T ALL DIAG03 {ATODSAT(2)} 1 T = T ALL DIAG04 {ATODSAT(3)} 1 T = T 10 0 DIAG01 = 10000 11 0 DIAG02 = 20000 12 0 DIAG03 = 30000 13 0 DIAG04 = ! ! Test equations still work ALL EXPFLAG SM-1 1 EXPSTART < [0.0+50499.0] !20 FEB 1997 ALL EXPFLAG SM-2 2 EXPSTART < [0.0+52333.0] !01 MAR 2002 ALL EXPFLAG SM-3 3 T = T 14 0 EXPFLAG = SM-2 15 0 EXPSTART = 51000.0 ! ! Test simple 'OR' condition ALL FILETYPE T 1 INSTRUME = WFPC2 ALL FILETYPE F 2 T = T 16 0 FILETYPE = T 17 0 INSTRUME = WFPC2 ! ! Used for error condition tests above 18 0 MAG_B = 19 0 MAG_R = 20 0 MAG_U = 21 0 MAG_V = 22 0 MOONANGL = ! ! Test missing keyword value (no problem) 23 0 MTFLAG = ! ! Test parsing capabilities: ! MT_LVa_b, where a:MTP_LEVL ! b:MTP_LINE ! ...and MTP_TEXT is the value 24 0 MTP_LEVL = 1 24 1 MTP_LEVL = 1 24 2 MTP_LEVL = 1 24 3 MTP_LEVL = 1 24 4 MTP_LEVL = 1 24 5 MTP_LEVL = 24 6 MTP_LEVL = 24 7 MTP_LEVL = 2 25 0 MTP_LINE = 1 25 1 MTP_LINE = 25 2 MTP_LINE = 25 3 MTP_LINE = 25 4 MTP_LINE = 25 5 MTP_LINE = 25 6 MTP_LINE = 25 7 MTP_LINE = 3 26 0 MTP_TEXT = Moving Target Level 1 26 1 MTP_TEXT = 26 2 MTP_TEXT = 26 3 MTP_TEXT = 26 4 MTP_TEXT = 26 5 MTP_TEXT = 26 6 MTP_TEXT = 26 7 MTP_TEXT = MT LEVEL 2_3 ! !...these are the input keywords from the .dcx file ! 27 0 MT_LV1_1 = Moving Target Level 1 28 0 MT_LV1_2 = 29 0 MT_LV1_3 = 30 0 MT_LV1_4 = 31 0 MT_LV1_5 = 32 0 MT_LV2_1 = 33 0 MT_LV2_2 = 34 0 MT_LV2_3 = MT LEVEL 2_3 35 0 MT_LV2_4 = 36 0 MT_LV2_5 = 37 0 MT_LV3_1 = 38 0 MT_LV3_2 = 39 0 MT_LV3_3 = 40 0 MT_LV3_4 = 41 0 MT_LV3_5 = ! ! ! This propogates the group 0 value. ! Note that some are overridden by a later rule.. ! ALL PROGRMID(*) {PROGRMID} 1 TARGNAME = {TARGNAME} ALL OBSET_ID(*) {OBSET_ID} 1 TARGNAME = {TARGNAME} ALL OBSNUM(*) {OBSNUM} 1 TARGNAME = {TARGNAME} ALL OBSERVTN(*) {OBSERVTN} 1 TARGNAME = {TARGNAME} !...which are overridden with: ALL PROGRMID(*) {PROGRMID} 1 MTP_TEXT = {MTP_TEXT} ALL OBSET_ID(*) {OBSET_ID} 1 MTP_TEXT = {MTP_TEXT} ALL OBSNUM(*) {OBSNUM} 1 MTP_TEXT = {MTP_TEXT} ! since there are 3 TARGNAME group values only 3 OBSERVTN ! however there are 7 group values for MTP_TEXT ! 42 0 OBSERVTN = 42 1 OBSERVTN = 42 2 OBSERVTN = 43 0 OBSET_ID = Jim 43 1 OBSET_ID = Jim 43 2 OBSET_ID = Jim 43 3 OBSET_ID = Jim 43 4 OBSET_ID = Jim 43 5 OBSET_ID = Jim 43 6 OBSET_ID = Jim 43 7 OBSET_ID = Jim 44 0 OBSNUM = 4q 44 1 OBSNUM = 4q 44 2 OBSNUM = 4q 44 3 OBSNUM = 4q 44 4 OBSNUM = 4q 44 5 OBSNUM = 4q 44 6 OBSNUM = 4q 44 7 OBSNUM = 4q 45 0 PROGRMID = 05Q 45 1 PROGRMID = 05Q 45 2 PROGRMID = 05Q 45 3 PROGRMID = 05Q 45 4 PROGRMID = 05Q 45 5 PROGRMID = 05Q 45 6 PROGRMID = 05Q 45 7 PROGRMID = 05Q ! !...input keyword for testing 46 0 SCAN_TYP = 47 0 SURF_B = 48 0 SURF_R = 49 0 SURF_U = 50 0 SURF_V = 12 ! ! Make sure quoted spaces still work ALL TARDESC2 "QUOTED SPACE" 1 T = T ! 51 0 TARDESC2 = QUOTED SPACE ! !...input keyword for testing 52 0 TARDESCR = 53 0 TARGCAT = Top Notch Category 54 0 TARGCAT2 = ! ! ...make multiple keys, multiple groups for target_synonym. Need to ! propogate the other keys from group zero too. ! ALL TARGNAME(1) {ALIAS1} 1 ALIAS1 != BLANK ALL TARGNAME(2) {ALIAS2} 1 ALIAS2 != BLANK 55 0 TARGNAME = Big Star 55 1 TARGNAME = Bigger than yours 55 2 TARGNAME = BIGGEST ! ! Test indexed keyword -> group: Allow gaps ! ALL TARKEY1 NULL 1 TARKEY1 = BLANK ALL TARKEY1(1) {TARKEY2} 1 TARKEY2 != BLANK ALL TARKEY1(2) {TARKEY3} 1 TARKEY3 != BLANK ALL TARKEY1(3) {TARKEY4} 1 TARKEY4 != BLANK ALL TARKEY1(4) {TARKEY5} 1 TARKEY5 != BLANK ALL TARKEY1(5) {TARKEY6} 1 TARKEY6 != BLANK ALL TARKEY1(6) {TARKEY7} 1 TARKEY7 != BLANK ALL TARKEY1(7) {TARKEY8} 1 TARKEY8 != BLANK ALL TARKEY1(8) {TARKEY9} 1 TARKEY9 != BLANK ALL TARKEY1(9) {TARKEY10} 1 TARKEY10 != BLANK ! 56 0 TARKEY1 = target key 1 56 1 TARKEY1 = say something 56 2 TARKEY1 = 56 3 TARKEY1 = nice 57 0 TARKEY10 = 58 0 TARKEY2 = say something 59 0 TARKEY3 = 60 0 TARKEY4 = nice 61 0 TARKEY5 = 62 0 TARKEY6 = 63 0 TARKEY7 = 64 0 TARKEY8 = 65 0 TARKEY9 = 66 0 TAR_TYPE = ! ! Test temporary keywords created on the fly... ! 67 0 t_MOVER = IGNORE 68 0 t_SCANER = IGNORE 69 0 t_CATARG = LOAD 70 0 t_PIXRES = .1 ! ! Construct your own tests: ! Add/modify keyword values in kr_test.dcx ! change keyword rules in kr_test.rules ! add new keywords in kr_test_cgg1.dat !------------------------------------------------------------------------