2

Ab Initio グラフには、行にパイプで区切られた値を持つ入力ファイルがあります。同様の DML ファイルを使用して解析します。

record
  decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
  utf8 string("|", maximum_length=10) v2 = "";
  utf8 string("|", maximum_length=10) v3 = "";
  utf8 string("|", maximum_length=40) v4 = "";
  utf8 string("|", maximum_length=255) v5 = "";
  utf8 string("\n", maximum_length=40) v6 = "";
end

後で他のデータとの等価比較で使用するために、これらすべての文字列をパイプ区切りにしたいので、v6 値を変更する必要があります。

出力DMLをこれに変更し、変換関数を空のままにして、単純な再フォーマットでそれを試みました。

record
  decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL(""); 
  utf8 string("|", maximum_length=10) v2 = "";
  utf8 string("|", maximum_length=10) v3 = "";
  utf8 string("|", maximum_length=40) v4 = "";
  utf8 string("|", maximum_length=255) v5 = "";
  utf8 string("|", maximum_length=40) v6 = "";
  string(1) newline = "\n";
end

ただし、これによりv6内にゴミ文字が残りました。後で、適切な文字のみが含まれるように v6 値をフィルタリングする必要がありました。この解決策はきちんとしていないようです。

このゴミがv6内に残るのを避けるために、reinterpret_as、string_concatなどを使用しようとしましたが、何もうまくいきませんでした。v6 の区切り文字を簡単に変更するにはどうすればよいですか?

4

1 に答える 1

3

A == B は、A の値と B の値を比較します。比較は、A と B の区切り文字が同じかどうかに関係なく、同じ結果を返します。フィールドの区切り文字を実際に変更する必要がある場合は、提案する Reformat メソッドが正しいものです。v6 の値にガベージが表示されている場合は、v6 にガベージが入っていることを意味します。

より大まかに言えば、Stack Overflow は Ab Initio について議論するのに適した場所ではありません。Ab Initio サポートまたは GDE からアクセスできる専用の Ab Initio フォーラムに質問を投稿することをお勧めします。フォーラムは多数の Ab Initio ユーザーと従業員によって監視されており、迅速な回答が得られることがほぼ保証されています。

于 2013-09-20T19:27:44.937 に答える