Example of Decoded Tide Gauge CREX Message
CREX++ T000101 A001 D06024++ AK010 2003 02 01 23 00 2801 00 00 30 -30 04928 -0063 05166 -0062 ///// //// ///// //// ///// //// ///// ////++ 7777 Section 1 Descriptor Set is saved in the array datadesc. The marker 'ENDDSC' is inserted after the last descriptor in datadesc. datadesc( 1) = D06024 datadesc( 2) = ENDDSC The array expdesc holds the list of the expanded Section 1 descriptors, in this example D06024. The marker 'ENDDSC' is inserted after the last descriptor in expdesc. expdesc( 1) = B01075 expdesc( 2) = B04001 expdesc( 3) = B04002 expdesc( 4) = B04003 expdesc( 5) = B04004 expdesc( 6) = B04005 expdesc( 7) = B22042 expdesc( 8) = B22120 expdesc( 9) = B22121 expdesc(10) = B04075 expdesc(11) = B04065 expdesc(12) = B22038 expdesc(13) = B22039 expdesc(14) = B22038 expdesc(15) = B22039 expdesc(16) = B22038 expdesc(17) = B22039 expdesc(18) = B22038 expdesc(19) = B22039 expdesc(20) = B22038 expdesc(21) = B22039 expdesc(22) = B22038 expdesc(23) = B22039 expdesc(24) = ENDDSC The array dataval holds the Section 2 decoded values. It is a 2-dimensional array because the CREX message may contain several reports. If there was a second report in the message, then the decoded values for the second report would be stored in dataval locations (2,?). The layout of the data in dataval is in a 1-to-1 correspondence (or close to it) with the layout of the descriptors in the array expdesc. For example, expdesc(1) = B01075, the descriptor for the tide station identification, corresponds to the decoded value in dataval(1,1), which is the station ID AK010. If there was a second report in the message, then the layout of the decoded values in dataval(2,?) would be the same as the layout in dataval(1,?). dataval( 1, 1) = AK010 dataval( 1, 2) = 2003.000 dataval( 1, 3) = 2.000 dataval( 1, 4) = 1.000 dataval( 1, 5) = 23.000 dataval( 1, 6) = .000 dataval( 1, 7) = 280.100 dataval( 1, 8) = .000 dataval( 1, 9) = .000 dataval( 1, 10) = 30.000 dataval( 1, 11) = -30.000 dataval( 1, 12) = 4.928 dataval( 1, 13) = -.063 dataval( 1, 14) = 5.166 dataval( 1, 15) = -.062 dataval( 1, 16) = //////// dataval( 1, 17) = //////// dataval( 1, 18) = //////// dataval( 1, 19) = //////// dataval( 1, 20) = //////// dataval( 1, 21) = //////// dataval( 1, 22) = //////// dataval( 1, 23) = //////// The dataval is a real*8 array. The array consists of both real and character data. Each location in dataval can hold 8 bytes of character data. Some descriptors with the unit defined as character can correspond to a data value which is more than 8 bytes in width. For example, suppose we have the following situation: expdesc( 1) = B01015 where B01015 is the Station name and has a width of of 20 characters. Here expdesc(1) corresponds to the data in the first three locations of dataval. That's why above it is mentioned that the layout of the list of descriptors in expdesc is in a 1-to-1, or close to it, correspondence with the layout of the data in dataval. dataval(1,1) = KWAA1wab (This is a fictitious station name.) dataval(1,2) = 22mmxyk1 dataval(1,3) = 1234 Each raw report in the CREX message is saved in the array rawrpt. The string 'endofrpt' marks the end of the above report. Since a message may contain several reports, the array rawrpt is a 2-dimensional array. If there was a second report in this message, it would be saved in the locations rawrpt( 2, ? ). The length in bytes of each report in rawrpt is stored in array lenrpts and does not include the byte count of the report string separator 'endofrpt'. Here lenrpts(1) = 108. rawrpt( 1, 1 ) = AK010 20 rawrpt( 1, 2 ) = 03 02 01 rawrpt( 1, 3 ) = 23 00 2 rawrpt( 1, 4 ) = 801 00 0 rawrpt( 1, 5 ) = 0 30 -30 rawrpt( 1, 6 ) = 04928 - rawrpt( 1, 7 ) = 0063 051 rawrpt( 1, 8 ) = 66 -0062 rawrpt( 1, 9 ) = ///// / rawrpt( 1, 10 ) = /// //// rawrpt( 1, 11 ) = / //// / rawrpt( 1, 12 ) = //// /// rawrpt( 1, 13 ) = / ///// rawrpt( 1, 14 ) = //// rawrpt( 1, 15 ) = endofrpt