レポート出力の解析

レポートから戻されたデータを解析するには、最初にレポートのフォーマットを理解する必要があります。レポート・スクリプトに{TABDELIMIT}コマンドが含まれる場合、データは次のフォーマットで戻ります:

      <token><tab><token><tab><token><tab>..........<token><newline>
<token><tab><token><tab><token><tab>..........<token><newline>
.....
<token><tab><token><tab><token><tab>..........<token><null>
   

たとえば、次のレポート・スクリプトを考えてみます:

      {SSFORMAT}{DECIMAL 0} <COL(Year) <ROW(Market) Budget Sales Cola <CHILD Qtr1 <ICHILD Market !
   

このレポート・スクリプトの出力は、通常、次のデータになります:

              Budget  Sales   Cola
        Jan     Feb     Mar
East    5200    5000    5300
West    5600    5350    5700
Central 4250    4050    4400
South   3800    3450    3800
 Market 18850   17850   19200
   

レポート・スクリプトに{TABDELIMIT}コマンドを組み込むと、レポート・スクリプトの出力データは次のとおりになります:

      <tab>Budget<tab>Sales<tab>Cola<newline>
<tab>Jan<tab>Feb<tab>Mar<newline>
East<tab>5200<tab>5000<tab>5300<newline>
West<tab>5600<tab>5350<tab>5700<newline>
Central<tab>4250<tab>4050<tab>4400<newline>
South<tab>3800<tab>3450<tab>3800<newline>
 Market <tab>18850<tab>17850<tab>19200<null>
   

このフォーマットでデータを解析するには、戻された文字列について、タブ、改行、NULLの有無をスキャンます。これらはそれぞれ、トークンの末尾を定義するものです。トークンは、次の4つのタイプのいずれかです:

レポートが、グリッドや配列などの内部データ構造体に保管されており、レポートの行数または列数が減少している場合(たとえば、ズーム・アウト操作後など)、新しいレポートの境界の調整が必要になることがあります。

数値と数値メンバー名との間の競合は、通常、先頭が数字のトークンをスキャンして、数値のパラメータ(小数点精度など)が適合しているかを検証すれば解決できます。適合していないトークンは、メンバー名として扱います。

より信頼できる方法は、レポートでのトークンの位置決めを使用して、メンバー名かデータ値かを判断する方法です。レポートの最初のx行は、メンバー名のみになります(ここで、xは、列次元の数 + ページ・ヘッダー用の1行)。また、最初のy列は、メンバー名のみになります(ここで、yは行次元の数)。トークンの座標がxおよびyの両方より大きい場合、トークンは、特別な値(#文字で始まる)または数値のいずれかです。

<QUOTEMBRNAMESコマンドを使用して、すべてのメンバー名の前後に二重引用符を付けることを強制する(それにより、識別の問題を避ける)ことができます。このコマンドを使用すると、先頭の二重引用符によって、メンバー名を認識できます。

戻されるレポート出力トークンを、ページ、列、行、データの各領域で解析することは、多くの場合有益であり、後続のレポートで容易に再利用できます(次の「レポート出力のスクリプトとしての使用」を参照)。