An error message in log files starts with the “error:” string, error location (namely, the name of F291 file and line number), and message text. A warning message follows the same structure except for that it starts with the “warning:” string. Error and warning messages are further explained below and their impacts on the conversion process are described. 1. error: D.depthX not given Part of record type D repeats TEMPERATURE, PRACTICAL SALINITY, and CONDUCTIVITY measurements per DEPTH. The number X runs from 1 to 5 and it identifies a repetition block. The repetition number is assigned in the order of appearance: 1 for columns 27-44, 2 for columns 45-62, and so forth. This error occurs when any of the three measurements is present but its corresponding DEPTH is absent. All measurements in the repetition block without DEPTH are discarded and they are not written to the NetCDF file. 2. error: E.depthX not given Part of record type E repeats PRESSURE, U-, V-, and W-COMPONENT measurements per DEPTH. The number X runs from 1 to 4 and it identifies a repetition block. The repetition number is assigned in the order of appearance: 1 for columns 27-48, 2 for columns 49-70, and so forth. This error occurs when any of the four measurements is present but its corresponding DEPTH is absent. All measurements in the repetition block without DEPTH are discarded and they are not written to the NetCDF file. 3. error: invalid format The current input line from a F291 file does not conform to the F291 specification. This typically happens when a field cannot be parsed to a number because of the presence of one or more non-numerical characters. The field is thrown away and conversion proceeds to next field on the same line. 4. error: orphaned record The required F291 record of type A is not found for this line. Conversion will be attempted using the date and time from this line. 5. error: unwritten measurements; avail XXXXXXXX, written YYYYYYYY This error is issued when one or more measurement data were successfully parsed but they were not written to the NetCDF file because of an error reported earlier in the log file. Data loss has occurred. Both avail and written bitmasks are 32-bit hexadecimal numbers. Each non-zero bit in the avail bitmask represents the availability of a measurement on the current F291 line. Each type of F291 record has its own bitmask mapping to F291 measurements. For example, the most significant bit for record type A is reserved for LATITUDE. However, it is used for ANEMOMETER HEIGHT in records of type B. (For complete bitmask mappings, the source code should be consulted.) The written bitmask tells which F291 data were actually written to the NetCDF file. By finding the difference between the avail and written bitmasks, one can determine which measurement was not recorded to the NetCDF file. 6. warning: blank tail(s) < X >; parsed as X0 This happens when the conversion program has an issue parsing a fixed-width integer with or without a sign. The brackets (< and >) delineates the fixed-width integer as found on the current F291 record. They are not part of the F291 record. One or more blank spaces appearing to the right side of X are treated as zeros. 7. warning: count mismatch; expected X, actual Y This warning can occur for record of types C, I, and K. The COUNT DATA in record type C and COUNT in record types I and K specify the expected number of data block repetition. When the actual number of repetition differs from the expected count, this warning is issued. 8. warning: delta unavailable for central value X.XX; will use zero This warning message is issued when a frequency resolution is unavailable for the wave_wpm_bnds variable in the NetCDF file or when a depth bin width is for the depth_bnds variable. The wave_wpm_bnds variable specifies the upper and lower bounds of each frequency value in the wave_wpm variable. In records of types C, G, H, I, K, and L, the FREQUENCY and its corresponding RESOLUTION are present. The FREQUENCY is converted and stored to the wave_wpm variable. The RESOLUTION is divided by two and the resulting value is added to or subtracted from the corresponding FREQUENCY to yield the upper or lower bounds of a wave_wpm_bnds entry. When a RESOLUTION is unavailable, the conversion program issues the warning message and uses a zero for the resolution. Record types D, E, and F defines the DEPTH but only record type E specifies BIN WIDTH, a width of each depth bin. When a BIN WIDTH is unavailable for a DEPTH, the warning is issued. For record types D and F, the warning will be issued for every DEPTH because there is no width information. 9. warning: MINUTE OF HOURLY PEAK is present but no speed/direction The MINUTE OF HOURLY PEAK is specified in a record of type J. However, its corresponding wind speed (HOURLY PEAK WIND) and/or direction (DIRECTION OF HOURLY PEAK) are not present. The MINUTE OF HOURLY PEAK datum is entered to the timem NetCDF variable by augmenting it with the REPORT DATE and the hour from REPORT TIME. 10. warning: negative spectral density -X.XX By definition, the spectral density C11 in a record of type C should be nonnegative. This warning occurs when the parsed value of a spectral density is negative. Nonetheless, the negative value is recorded to the NetCDF file. 11. warning: negative visibility -X.X The VISIBILITY in a record of type B is expected to be nonnegative because it measures visibility in nautical miles. This warning occurs when the parsed value of a visibility measurement is negative. Nonetheless, the negative value is recorded and kept in the NetCDF file. 12. warning: real number for BOTTOM DEPTH XX.X The BOTTOM DEPTH field in record type A specifies a number with up to five digits without a decimal point. A decimal point is to be placed at tenths. However, when a decimal point is present on the five-character field, this warning message is printed. The given datum is parsed as a real number and recorded to the NetCDF file. 13. warning: real number for WIND SPEED (AVG) X.XX The WIND SPEED (AVG) field in record type B specifies a number with up to four digits without a decimal point. A decimal point is to be placed at hundredths. However, when a decimal point is present, this warning message is given. The given datum is parsed as a real number and recorded to the NetCDF file. 14. warning: skip invalid integer <####> This warning happens when the conversion program fails to parse a fixed-width integer with or without a sign. The brackets (< and >) delineates the fixed-width integer as found on the current F291 record and they are not part of the record. Presence of a non-numeric character, which typically is a sharp character (#), causes an “invalid format” error. This warning message supplements the error with details. The datum is discarded and conversion proceeds to next field on the same F291 record. 15. warning: skip invalid unsigned integer <####> This warning happens when the conversion program fails to parse a fixed-width unsigned integer without a sign. The brackets (< and >) delineates the fixed-width integer as found on the current F291 record and they are not part of the record. Presence of a non-numeric character, which typically is a sharp character (#), causes an “invalid format” error. This warning message supplements the error with details. The datum is discarded and conversion proceeds to next field on the same F291 record. 16. warning: TIME OF HOURLY LOW ATMOSPHERIC PRESSURE is present but no pressure The TIME OF HOURLY LOW ATMOSPHERIC PRESSURE is present in a record of type J. However, its corresponding pressure (HOURLY LOW ATMOSPHERIC PRESSURE) is absent. The TIME OF HOURLY LOW ATMOSPHERIC PRESSURE datum is entered to the timen NetCDF variable by using the REPORT DATE. 17. warning: TIME OF HOURLY PEAK WIND SPEED is present but no speed/direction The TIME OF HOURLY PEAK WIND SPEED is given in a record of type J. However, its corresponding wind speed (HOURLY PEAK WIND SPEED) and/or direction (DIRECTION OF HOURLY PEAK WIND SPEED) are absent. The TIME OF HOURLY PEAK WIND SPEED datum is entered to the timem NetCDF variable by using the REPORT DATE. 18. warning: too many unwritten measurements; stopped reporting As explained elsewhere, an unwritten measurements error occurs when one or more measurement data are not written to the NetCDF file. To reduce the size of a log file, the “unwritten measurements” errors are reported up to three times. If the error occurs more than three times, this warning message is issued and the subsequent errors are not reported for the remainder of conversion process.