Comments in this syntax presentation are enclosed in double quotes ".
CSV_file_format ::= [[ CSV_record ] CSV_record_separator [[ CSV_record ] CSV_record_separator ]... ] [CSV_record]
CSV_record ::= { [CSV_field CSV_delimiter]... CSV_non-empty_field | CSV_field CSV_delimiter [CSV_field CSV_delimiter]... }
CSV_record_separator ::= { X'04' "(EBCDIC control character NEL)" | X'0D' "(EBCDIC control character CR)" | X'15' "(EBCDIC control character LF)" | X'25' "(EBCDIC control character)" |
"End of record of a BS2000SAM file" }
CSV_field ::= { CSV non-empty field | "(leer)" }
CSV_non-empty_field ::= { CSV plain field | CSV quoted field }
CSV_plain_field ::= CSV_plain_intro [ CSV_plain_part ]...
CSV_plain_intro ::= { CSV_escape_sequence | "all characters except CSV_record_separator, CSV_delimiter, CSV_escape und CSV_quote" }
CSV_plain_part ::= { CSV_escape_sequence | "all characters except CSV_record_separator, CSV_delimiter und CSV_escape" }
CSV_quoted_field ::= CSV_quote [ CSV_quoted part ]... CSV_quote
CSV_quoted_part ::= { CSV_quote CSV_quote | CSV_escape_sequence | "End of record of a BS2000SAM file" | "all characters except CSV_quote und CSV_escape" }
CSV_escape_sequence ::= { CSV_escape CSV_record_separator | CSV_escape CSV_delimiter | CSV_escape CSV_quote | CSV_escape CSV_escape }
CSV_delimiter ::= character
CSV_quote ::= character
CSV_escape ::= character
For details of CSV_delimiter, CSV_quote, and CSV_escape, see also the syntax description of the CSV function on "CSV() - Reading a BS2000 file as a table".