obschk.txt - 1.1 - 2006/10/20
----------------------------------------------------------------------
                Program obschk DOCUMENTATION
----------------------------------------------------------------------

Purpose - to check the Blue Book B-file and the G-file.
         
To execute on the PC, two files are required - obschk.exe and contrib.dat 

Upon executing obschk, the user is queried for a B-file (4-digit or 3-digit 
ssn), a G-file (optional), a short (without 70I - 73I rec) output file and 
a long (with 70I - 73I rec) output file.

B-file records checked are: 20,22,25,27,30,32,40,42,45,50,51,52,53,54,60,
70,71,72,80,82,84,85,86 and data set id rec

Blue Book G-file records checked are: B,C,D,E,F and I

Obschk is not a complete checking program.  Program newchkob performs 
additional syntax and structure checks on the blue book B-file and should
be run prior to obschk.

The output file consists of two parts: (1) the blue book B-file data check
and (2) the blue book G-file data check:

1. B-file data check - an error message  followed by the B-file record may
   be written to the output file.

   error messages                                              records
   --------------                                              -------
   data set id rec submitting agency cc 19-24                  data set id
   not in contrib.dat file
   
   12 century field obs began cc 11-12 is not 18,19,20         12
   
   12 century field obs end cc 17-18 is not 18,19,20           12
   
   12 year field obs began cc 13-14 is non-integer             12
   
   12 year field obs end cc 19-20 is non-integer               12
   
   12 end year cc 17-20 is less than began year cc 11-14       12
   
   12 end year cc 17-20 exceeds began year cc 11-14 by more    12
   than 99
   
   the derived 4-digit year __ is not between *12* year obs    20,30,40,45,
   began __ and year obs end __                                50,52,60

   standpt ssn cc 11-14 not found in 80 or 82 records          20,22,30,32,
                                                               40,42,45,50,
                                                               51,52,54,60

   forept ssn cc 51-54 not found in 80 or 82 records           20,22,40,42,45,
                                                               60

   forept ssn cc 46-49 not found in 80 or 82 records           50,51,52,54

   left forept ssn cc 51-54 not found in 80 or 82 records      30,32

   right forept ssn cc 72-75 not found in 80 or 82 records     30,32

   job specific instrument number cc 33-35 non-integer         20,30,40,45,60

   job specific instrument number cc 33-35 not found in        20,30,40,45,60
   70 records
    
   direction cc 64-72 non-integer                              20,22 
   
   angle cc 64-71 non-integer                                  30,32
   
   VA or ZD cc 64-71 non-integer                               40,42

   sigma cc 77-80 non-integer                                  20,22,30,32,
                                                               40,42,52,60

   elevation difference cc 64-72 non-integer                   45

   sigma cc 73-76 non-integer                                  45
    
   70 rec equip code not 400-899                               50,51,52,53,54

   distance code cc 73 is not THS                              50

   distance code cc 73 is not S                                51

   distance code cc 73 is not XG                               52

   distance code cc 74 is not XG                               54

   distance cc 64-72 non-integer                               50,51,52

   distance cc 64-73 non-integer                               54

   job specific instrument number cc 23-25 non-integer         50,51,52,54

   job specific instrument number cc 23-25 not found in 70     50,51,52,54
   records

   sigma cc 78-80 non-integer                                  54

   eta cc 15-16 is blank                                       60

   eta cc 15-18 non-integer                                    60

   direction of eta cc 19 is not EW                            60

   azimuth cc 64-71 is blank                                   60

   azimuth cc 64-71 non-integer                                60

   origin of azimuth cc 72 is not NS                           60

   comp code cc 20 is not AL or blank  (old version)           60

   comp code cc 20 is not AL  (new version)                    60

   70 record equipment code cc 14-16 non-integer, exec term    70

   70 record job specific instrument number cc 11-13           70
   non-integer, exec term

   70 record instrument serial number cc 71-80 is blank        70

   70 record instrument serial number cc 71-80 is              70
   not left justified

   number of 70 records exceeds 100, exec term                 70

   duplicate job specific instrument number cc 11-13 with      70
   a different equipment code cc 14-16 exists in 70 records
   
   71 record job specific antenna  number cc 11-13             71
   non-integer, exec term
   
   71 record job specific antenna  number cc 11-13             71
   blank, exec term
   
   71 record ngs antenna code 14-29 is not left justified      71
   
   71 record ngs antenna code 14-29 is blank                   71
   
   
   71 record antenna serial number cc 30-41 is blank           71
   
   71 record antenna serial number cc 30-41 is not left        71 
   justified
   
   71 record antenna phase pattern file 42-53 is not left      71
   justified
   
   71 record antenna phase pattern file 42-53 is blank         71
   
   71 record source organization cc 54-59 is not left          71
   justified
  
   71 record source organization cc 54-59 is blank             71
   
   the number of 71 records exceeds 100                        71 
   
   duplicate job specific antenna number exists in 71 records  71
   
   71 and 72 records not allowed in the same bfile             71,72
   
   72 record job specific antenna  number cc 11-13             72
   non-integer, exec term
   
   72 record job specific antenna  number cc 11-13             72
   blank, exec term
   
   72 record ngs antenna code 17-36 is not left justified      72
   
   72 record ngs antenna code 17-36 is blank                   72
   
   72 record antenna serial number cc 45-64 is blank           72
   
   72 record antenna serial number cc 45-64 is not left        72 
   justified
   
   the number of 72 records exceeds 100                        72 
   
   duplicate job specific antenna number exists in 72 records  72
   
  
   date field cc 35-40 non-integer                             50,52,54

   year field cc 35-36 blank                                   50,52,54

   date field cc 40-45 non-integer                             20,22,30,32,
                                                               40,42,45,60

   year field cc 40-41 blank                                   20,22,30,32,
                                                               40,42,45,60

   hours field cc 41-44 non-integer                            50,52,54

   time zone code cc 45 not NOPQRSTUVWXYZ                      50,52,54

   hours field cc 46-49 non-integer                            20,22,30,32,
                                                               40,42,45,60

   time zone code cc 50 not NOPQRSTUVWXYZ                      20,22,30,32,
                                                               40,42,45,60

   number of 25 records exceeds 2000, exec term                25

   25 record job specific instrument number cc 28-30           25
   non-integer, exec term

   25 record job specific instrument number cc 28-30 is blank  25
   
   25 record job specific antenna number cc 33-35              25
   non-integer, exec term
   
   27 record antenna height cc 25-29 non-integer, exec term    27

   warning - 27 rec ant ht cc 25-29 is zero                    27

   27 rec ARP ht cc 56-60 non-integer, execution terminated    27

   warning - 27 rec ARP ht cc 56-60 is zero                    27

   warning - 27 ant ht cc25-29 and ARP ht cc56-60 are equal    27

   warning - 27 ant ht cc25-29 and ARP ht cc 56-60 are both    27
   blank     

   27 record ssn cc 11-14 does not match preceding             25,27
   25 record ssn cc 11-14, exec term

   number of 80 records exceeds 9999, exec term                80

   80 record latitude cc 45-55 non-integer                     80

   80 record longitude cc 57-68 non-integer                    80

   80 record elevation cc 70-75 non-integer                    80
    
   80 record elevation code cc 76 not ABCDFGHJKLMPRTV          80

   80 record order type code cc 79-80 not in annex E           80

   number of 82 records exceeds 9999, exec term                82

   84 record geoid ht cc 72-76 non-integer (old version)       84

   84 record sigma cc 77-80 non-integer (old version)          84

   84 record geoid ht cc 70-75 non-integer  (new version)      84

   84 record sigma cc 76-80 non-integer  (new version)         84
   
   85 record deflection model code cc 62 not ACHJLMNPQTb       85

   85 record meridional component cc 63-67 non-integer         85

   85 record direction of meridional component cc 68 not NS    85

   85 record meridional component sigma cc 69-71 non-integer   85

   85 record prime-vertical component cc 72-76 non-integer     85

   85 record  direction of prime-vertical component cc 77      85
   not EW 

   85 record prime-vertical component sigma cc 78-80           85
   non-integer
    
   86 record orthometric height cc 17-23 non-integer           86

   86 record orthometric height code cc 24 not ABCDFGHJKLMPRTV 86

   86 record ortho height order and class cc 25-26 not         86
   10/11/12/20/21/22/30/40/3 /  /

   86 record ortho height NGSIDB indicator cc 27 not YN        86

   86 record ortho height datum cc 28-29 not                   86
   00/29/55/85/88/AS/LT/NM/PR


   86 record ortho height organization cc 30-35 not in         86 
   contrib.dat file

   86 record geoid height cc 36-42 non-integer                 86

   86 record geoid height code cc 43 not BCDEFGHJPQTUVWX       86

   86 record ellipsoid height cc 46-52 non-integer             86

   86 record ellipsoid height code cc 53 not ABCDE             86

   86 record ellipsoid height order and class cc 54-55 not     86
   11/12/21/22/31/32/41/42/51/52/

   86 record ellipsoid height datum cc 56 not ABCDEFGZ         86

2. G-file data check - 70I, 71I, 72I, 73I and 76I records are generated and
   written to the output file.  These records are used in program bbload
   to load GPS data into the NGSIDB.  As these records are being written  
   an error message followed by the G-file record may be written to the 
   output file.  The 70I, 71I, 72I, 73I and 76I records are included
   in obschk to facilitate the location of GPS data errors.  The record
   formats for these records are:

   70I record - one for each B record (each grp_no).  This data is
                loaded into the NGSIDB <GPS_GRP> table by bbload.
		
   cc   1:3   - 70I
   cc   5:8   - GRP_NO           one generated for each B record
   cc  10:17  - START_DATE       B record cc 2 - 9
   cc  19:22  - START_TIME       B record cc 10 - 13
   cc  24:31  - END_DATE         B record cc 14 - 21
   cc  33:36  - END_TIME         B record cc 22 - 25
   cc  38:52  - SOFTWARE         B record cc 28 - 42
   cc  54:58  - ORBIT_SOURCE     B record cc 43 - 47
   cc  60:64  - ORBIT_ACCU       B record cc 48 - 51
   cc  66:67  - REFER_SYS        B record cc 52 - 53
   cc  69:70  - MET_USE          B record cc 54 - 55
   cc  72:73  - ION_USE          B record cc 56 - 57
   cc  75:80  - PROCS_AGENCY     B record cc 61 - 66
   cc  82:83  - SPA_TYPE         default = 7 (G-file GPS)
   cc  85:87  - IDB              'IDB' if data obtained from NGSIDB retrieval
   
   _______________________________________________________________

   71I record - one for each C record (each vect_id).  This data is
                loaded into the <GPS_OBS> table by bbload.

   cc   1:3   - 71I
   cc   5:8   - VECT_ID          one generated for each C and F record
   cc  10:13  - VECT_IN_GRP      one generated for each C and F rec in the group
   cc  15:18  - GRP_NO           one generated for each B record
   cc  20:23  - STANDPT SSN      C record cc 2 - 5
   cc  25:28  - FOREPT SSN       C record cc 6 - 9
   cc  33:44  - DELTA_X          C record cc 10 - 20
   cc  46:52  - STDDEV_X         C record cc 21 - 25
   cc  54:68  - DELTA_Y          C record cc 26 - 36
   cc  70:76  - STDDEV_Y         C record cc 37 - 41
   cc  78:92  - DELTA_Z          C record cc 42 - 52
   cc  94:100 - STDDEV_Z         C record cc 53 - 57
   cc 102:102 - REJECT           C record cc 58
   cc 104:105 - SOL_FREQ         B record cc 75- 76
   cc 107:108 - SOL_DIFF         B record cc 77 - 78
   cc 110:111 - SOL_BIAS         B record cc 79 - 80
   cc 113:114 - FREQ_STD         default = 1
   cc 116:118 - IDB              'IDB' if data obtained from NGSIDB retrieval

--------------------------------------------------------------------------------

   71I record - one for each F record (each vect_id).  This data is
                loaded into the <GPS_OBS> table by bbload.

   cc   1:3   - 71I
   cc   5:8   - VECT_ID          one generated for each C and F record
   cc  10:13  - VECT_IN_GRP      one generated for each C and F rec in the group
   cc  15:18  - GRP_NO           one generated for each B record
   cc  20:23  - STANDPT SSN      F record cc 2 - 5
   cc  25:28  - FOREPT SSN       F record cc 6 - 9
   cc  33:44  - DELTA_X          F record cc 10 - 22
   cc  46:52  - STDDEV_X         F record cc 23 - 27
   cc  54:68  - DELTA_Y          F record cc 28 - 40
   cc  70:76  - STDDEV_Y         F record cc 41 - 45
   cc  78:92  - DELTA_Z          F record cc 46 - 58
   cc  94:100 - STDDEV_Z         F record cc 59 - 63
   cc 102:102 - REJECT           F record cc 64
   cc 104:105 - SOL_FREQ         B record cc 75- 76
   cc 107:108 - SOL_DIFF         B record cc 77 - 78
   cc 110:111 - SOL_BIAS         B record cc 79 - 80
   cc 113:114 - FREQ_STD         default = 1
   cc 116:118 - IDB              'IDB' if data obtained from NGSIDB retrieval

   _______________________________________________________________

   72I record - one for each correlation on a D record.  This data is
         	loaded into the <GPS_CORR> table by bbload.

   cc   1:3   - 72I
   cc   5:8   - VECT1_ID         first vector in D record correlation
   cc  10:13  - VECT2_ID         second vector in D record correlation
   cc  15:15  - VECT1_COMP       first vector component in D record correlation
   cc  17:17  - VECT2_COMP       second vector component in D record correlation
   cc  19:28  - CORRELATION      D record correlation
   cc  30:32  - IDB              'IDB' if data obtained from NGSIDB retrieval

   ----------------------------------------------------------------

   76I record - one for each covariance on a E record.  This data is
         	loaded into the <GPS_COV> table by bbload.

   cc   1:3   - 76I
   cc   5:8   - VECT1_ID         first vector in E record covariance 
   cc  10:13  - VECT2_ID         second vector in E record covariance 
   cc  15:15  - VECT1_COMP       first vector component in E record covariance 
   cc  17:17  - VECT2_COMP       second vector component in E record covariance 
   cc  19:31  - COVARIANCE       E record covariance 
   cc  33:35  - IDB              'IDB' if data obtained from NGSIDB retrieval

   _______________________________________________________________

   73I record - one for each ssn on each C record.  This data is
                loaded into the <OCC_GPS_PTS> table by bbload.

   cc   1:3   - 73I
   cc   5:8   - GRP_NO           one generated for each B record
   cc  10:15  - ANT_HEIGHT       27 record cc  25 - 29
   cc  17:26  - MEDIA_ID         25 record media_id cc 15 - 24
   cc  28:31  - SSN              25 record ssn cc 11 - 14
   cc  33:35  - EQUIP_CODE       70 record equipment code cc 14 - 16
   cc  37:46  - EQUIP_SN         70 record instrument serial number cc 71 - 80
   cc  48:50  - IDB              'IDB' if data obtained from NGSIDB retrieval
   cc  57:62  - ARP_HT           27 record cc 56 - 60 

   comments regarding generation of 73I records:
   a.  there should be a 25 record for each occupation to generate 73I records 
       for the <OCC_GPS_PTS> table
   b.  for each 25 record, the 25 record media_id is matched with a C record
       media_id to determine the group number
   c.  the 25 job specific instrument number is matched with a 70 record job
        specific instrument number to determine EQUIP_CODE and EQUIP_SN
   d.  if no media_id match is made, a 73I record is not written to the file
   e.  if no job specific instrument number match is made a 73I record is
       written without a EQUIP_CODE and EQUIP_SN

________________________________________________________________

   error messages                                              records
   --------------                                              -------

     (the following are associated with the 70I records)

   B record number of vectors in group cc 26-28 non-integer    B

   B record orbit_accu cc 48-51 non-integer                    B

   B record starting date cc 2-9 non-integer                   B

   B record starting time cc 10-13 non-integer                 B

   B record ending date cc 14-21 non-integer                   B

   B record ending time cc 22-25 non-integer                   B

   B record starting date cc 2-9 or starting time cc 10-13     B
   or ending date cc 14-21 or ending time cc 22-25 is blank

   B record starting date cc 2-9 is greater than ending        B
   date cc 14-21

   B record starting date cc 2-9 equals ending date cc 14-21   B
   and starting time cc 10-13 is greater than or equal to
   ending time cc 22-25

   number of unique B record orbit_sources cc 43-47            B
   exceeds 99           

   B record orbit source cc 43-47 not                          B
   AEROS/BROAD/COD/DMA/EMR/IGS/JPL/NGS/NSWC/PCISE/SIO/UNK/
     valid orbit sources are:
     AEROS   - Aero Service Corp
     BROAD   - Broadcast
     COD     - Center for Orbit Determination
     DMA     - Defense Mapping Agency
     EMR     - Energy Mines and Resources
     IGS     - International GPS Service
     JPL     - Jet Propulsion Laboratory
     NGS     - National Geodetic Survey
     NSWC    - Naval Surface Warfare Center
     PCISE   - Precise
     SIO     - Scripps Institute of Oceanography
     UNK     - Unknown

   B record processing agency cc 61-66 not in contrib.dat file B
   
   B record ref system code cc 52-53 not 1/2/3/4/5/6/7/8/9/    B
   10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/98/99/ 

   B record met use code cc 54-55 not 1/2/3/                   B

   B record ion use code cc 56-57 not 1/2/3/                   B
   
   B record solution frequency 75-76 not L1/L2/IF/WL/OT/K1/    B
   K2/KI/KW/P1/P2/PI/PW/

   B record solution difference cc 77-78 not TD/DD/SD/         B
   
   B record solution bias cc 79-80 not FL/FX/PF/               B
   
   I rec antenna phase pattern file cc 2-13 not left-justified I
   
   I record antenna agency cc 22-27 not in contrib.dat file    I
   
   I record date cc 28-35 blank                                I
   
   I record date cc 28-35 blank                                I
   
   I record date cc 28-35 non-integer                          I
   

     (the following are associated with the 71I records)

   the number of C/F rec in a group exceeds 50, exec term      C,F

   the C/F rec count exceeds B record number of vectors        C,F
   in group cc 26-28
   
   origin ssn cc 2-5 not found in 80 records                   C
   
   differential ssn cc 6-9 not found in 80 records             C

   C record delta X cc 10-20 non-integer                       C

   C record std dev X cc 21-25 non-integer                     C

   C record delta Y cc 26-36 non-integer                       C

   C record std dev Y cc 37-41 non-integer                     C

   C record delta Z cc 42-52 non-integer                       C

   C record std dev Z cc 53-57 non-integer                     C

   C record rejection code cc 58 is not R or blank             C

   the number of C/F rec in G-file exceeds 5000                C,F

   F record delta X cc 10-22 non-integer                       F

   F record std dev X cc 23-27 non-integer                     F

   F record delta Y cc 28-40 non-integer                       F

   F record std dev Y cc 41-45 non-integer                     F

   F record delta Z cc 46-58 non-integer                       F

   F record std dev Z cc 59-63 non-integer                     F
   
   origin ssn cc 2-5 not matched with 25 record ssn            F
   
   differential ssn cc 6-9 not matched with 25                 F
  
   F record reject cc 64 is not R or blank                     F

     (the following are associated with the 72I records)

   72I/76I rec for group __ not written to output.             D,E
   correlations/covariances read - __, corr/cov required -__

   D record row number cc 2-4 non-integer                      D

   D record col number cc 5-7 non-integer                      D

   D record correlation cc 8-16 non-integer                    D

   D record row number cc 17-19 non-integer                    D

   D record col number cc 20-22 non-integer                    D

   D record correlation cc 23-31 non-integer                   D

   D record row number cc 32-34 non-integer                    D

   D record col number cc 35-37 non-integer                    D

   D record correlation cc 38-46 non-integer                   D

   D record row number cc 47-49 non-integer                    D

   D record col number cc 50-52 non-integer                    D

   D record correlation cc 53-61 non-integer                   D

   D record row number cc 62-64 non-integer                    D

   D record col number cc 65-67 non-integer                    D

   D record correlation cc 68-76 non-integer                   D


     (the following are associated with the 76I records)

   72I/76I rec for group __ not written to output.             D,E
   correlations/covariances read - __, corr/cov required - __

   E record row number cc 2-4 non-integer                      E

   E record col number cc 5-7 non-integer                      E

   E record covariance cc 8-19 non-integer                     E

   E record row number cc 20-22 non-integer                    E

   E record col number cc 23-25 non-integer                    E

   E record covariance cc 26-37 non-integer                    E

   E record row number cc 38-40 non-integer                    E

   E record col number cc 41-43 non-integer                    E

   E record covariance cc 44-55 non-integer                    E

   E record row number cc 56-58 non-integer                    E

   E record col number cc 59-61 non-integer                    E

   E record covariance cc 62-73 non-integer                    E 

     (the following are associated with the 73I records)

   70 record job specific number cc 11-13 not found for        70,C
   25 record job specific instrument number cc 28-30 of ___ 
   
   71 record job specific number cc 11-13 not found for        71,C
   25 record job specific antenna number cc 33-35 of ___ 
   
   72 record job specific number cc 11-13 not found for        72,C
   25 record job specific antenna number cc 33-35 of ___ 

   27 record antenna height cc 25-29 is zero                   27

   25 record media_id cc 15-24 not found for C record          25,C
   origin station media_id cc 59-68 of ____

   25 record media_id cc 15-24 not found for C record          25,C
   differential station media_id cc 69-78 of ___

   number of C record media_ids in a group exceeds 50          C

   all 25 records used                                         25,C

   25 records not used                                         25,C
   ssn   media id   instr no

end obschk.txt
__________________________________________________________________
