
DataWindow オブジェクトの ImportFile() 関数を使用して CSV ファイルを読み込む際、開始行を指定する引数 startrow(例: ヘッダー行をスキップするための startrow = 2 など)を設定していると、CSV 内の二重引用符(")で囲まれた項目に含まれる改行コードが正しく認識されず、物理的な改行コード単位で処理が行われてしまう不具合が発生します。
| バグ ID | 15235 |
| 製品 | PowerBuilder |
| ステータス | Appeon にて検証・修正対応中 |
| バージョン | 日本語版 | 英語版 |
|---|---|---|
| 12.6 以前 | - | × |
| 2017 (R2) | - | - |
| 2017 (R3) | - | - |
| 2019 | - | - |
| 2021 | - | - |
| 2022 | × | - |
ImportFile() 関数における startrow のスキップ判定処理において、二重引用符(")で囲まれたテキストのエスケープ解析が行われず、純粋な物理改行コード単位でスキップ行数がカウントされることが原因です。
たとえば、1 行目のヘッダー項目内に改行が含まれている CSV ファイルを startrow = 2 (2 行目から読み込み) でインポートした場合、1 行目のヘッダー内にある改行の時点で「2 行目」と誤判定されます。その結果、本来読み込まれるべき 2 行目のデータ前半部分がヘッダーの一部としてスキップされ、データ崩れや取り込み件数の不整合が発生します。
なお、startrow を指定せず全件読み込む場合 (または startrow = 1 指定時) は、ダブルクォーテーション内の改行、カンマ、エスケープ ("") はすべて正常にサポート・処理されます。

本不具合が修正されるまでの間、以下のいずれかの方法で回避してください。
startrow = 1 で全件インポート後に不要行を削除する (推奨) startrow によるスキップ機能を使用せず、一度 startrow = 1 で全データを DataWindow へインポートした直後に、スクリプトで先頭の不要行 (ヘッダー行) を削除します。
XML フォーマットを使用する
取り込みファイルのフォーマットを CSV 形式から XML 形式に変更し、ImportFile(XML!, ...) を使用してインポートを行います。