6.8.3 入出力手続き文と動作
CSV編成ファイルに対する入出力手続き文について説明します。なお,CSV編成ファイルでは,OPEN文,READ文,WRITE文,CLOSE文だけが手続き文として使用できます。これ以外の手続き文は,使用できません。また,次に記載されている以外の規則については,順編成ファイルの場合と同じです。
- 〈この項の構成〉
(2) READ文
-
CSV編成ファイルから読み込まれた1行中に含まれる各セルの情報は,レコード定義の基本項目に1対1で対応して格納されます。このとき,レコード中に含まれるセルの個数がレコード定義の基本項目数より多い場合,対応する基本項目がないセルの情報は無視されます。逆に,レコード中に含まれるセルの個数がレコード定義の基本項目数より少ない場合,対応するセルがない基本項目の値は変更されません。
-
セルの情報が基本項目に格納されるときは,英数字項目の転記の規則に従います。
-
入力したレコードにダブルコーテーション(")が含まれない場合,コンマ(,)または改行文字を区切り文字として,データが入力されます。
-
入力したレコードにダブルコーテーション(")が含まれる場合,次の規則に従ってデータが入力されます。
- (コンマの直後がダブルコーテーションの場合)
-
次に現れるダブルコーテーションの直前までが,セルの情報として扱われます。ダブルコーテーションが出現する前にコンマがあっても,セルの区切り文字とはみなしません。
この場合,セルの情報にダブルコーテーションが含まれる場合でも,区切り文字とみなされるので注意が必要です。
- (コンマの直後がダブルコーテーションでない場合)
-
データ中に含まれるダブルコーテーションは,文字データとして扱われます。
-
入力したレコード中の,一つのセルの文字列長が入力領域より長い場合,入力領域の長さ分の文字列が読み込まれ,残りの部分は切り捨てられます。このとき,FILE STATUS句を指定していると,入出力状態に04が返されます。
-
INTO指定がある場合は,INTO指定のレコード構造に従ってデータが入力されます。INTO指定がない場合は,ファイル記述項に定義したレコードの構造に従ってデータが入力されます
-
READ文の実行が失敗した場合,レコード領域の内容が不定となります。
(3) WRITE文
-
WRITE文を実行すると,レコード領域中の基本項目単位をセルの情報として,おのおののセルがダブルコーテーション(")で囲まれ,レコードの終端に改行文字が付いた形式で出力されます。各セルの情報をダブルコーテーションで囲まないで出力したい場合は,「6.8.6 セルデータをダブルコーテーションで囲まないで出力する機能」の説明を参照してください。
-
出力レコードの基本項目に含まれる右端の半角空白文字は出力されません。また,出力する基本項目のデータがすべて半角空白文字の場合,対応するセルの情報には,連続したダブルコーテーション("")だけが出力されます。
出力レコードの基本項目のデータの最後にある空白も出力したい場合は,「6.8.8 データの後の空白文字を出力する機能」を参照してください。
-
FROM指定がある場合は,FROM指定のレコード構造に従ってデータが出力されます。FROM指定がない場合は,ファイル記述項に定義されたレコードの構造に従ってデータが出力されます。