レポートから戻されたデータを解析するには、最初にレポートのフォーマットを理解する必要があります。レポート・スクリプトに{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つのタイプのいずれかです:
メンバー名(先頭は必ず英数字)
データ値(先頭は必ず数字または負の記号)
#Missingなどの特殊な値(先頭は必ず#文字)
空のセル(前述のいずれにも該当しない場合)
レポートが、グリッドや配列などの内部データ構造体に保管されており、レポートの行数または列数が減少している場合(たとえば、ズーム・アウト操作後など)、新しいレポートの境界の調整が必要になることがあります。
数値と数値メンバー名との間の競合は、通常、先頭が数字のトークンをスキャンして、数値のパラメータ(小数点精度など)が適合しているかを検証すれば解決できます。適合していないトークンは、メンバー名として扱います。
より信頼できる方法は、レポートでのトークンの位置決めを使用して、メンバー名かデータ値かを判断する方法です。レポートの最初のx行は、メンバー名のみになります(ここで、xは、列次元の数 + ページ・ヘッダー用の1行)。また、最初のy列は、メンバー名のみになります(ここで、yは行次元の数)。トークンの座標がxおよびyの両方より大きい場合、トークンは、特別な値(#文字で始まる)または数値のいずれかです。
<QUOTEMBRNAMESコマンドを使用して、すべてのメンバー名の前後に二重引用符を付けることを強制する(それにより、識別の問題を避ける)ことができます。このコマンドを使用すると、先頭の二重引用符によって、メンバー名を認識できます。
戻されるレポート出力トークンを、ページ、列、行、データの各領域で解析することは、多くの場合有益であり、後続のレポートで容易に再利用できます(次の「レポート出力のスクリプトとしての使用」を参照)。