REPORTプロシジャで、1行おきに背景色を変える

[OS] ALL
[リリース] SAS 8.2以降
[キーワード] ODS, REPORT, background color,every other row

[質問]

ODS HTMLで、REPORTプロシジャの出力をHTMLファイルに出力しています。
出力された行の背景色を1行おきに変えることはできますか。

[回答]

CALL DEFINEステートメントを使用して、特定の行や列のスタイルを指定することができます。
この機能とMOD関数の戻り値を組み合わせて、1行おきに背景色を変更できます。

MOD関数説明
MOD関数は、被除数を除数で割ったときの余りを求めます。

MOD関数の構文

  MOD(被除数,除数) 


CALL DEFINEステートメント説明
レポート定義に使用します。STYLE=属性では、CALL DEFINEステートメントの影響を受けるセルに適用 するスタイルを指定します。

CALL DEFINEステートメントの構文

  CALL DEFINE (column-id, 'attribute-name', value);  

下記の例では、MOD関数にて行数を2で割って奇数と偶数に分類し、1行分のカラムに対するすべての背景色を個別に指定しています。

例:CALL DEFINEステートメントで背景色を指定


  ODS HTML BODY='c:¥sashtml¥report1.html'; 
    PROC REPORT DATA=sashelp.class NOWD
      STYLE(HEADER)=[BACKGROUND=CX00ccff];
      COLUMN name age sex height weight;
      COMPUTE age;
        count+1;                                              /* 行の連番をセット */
        IF MOD(count,2)=1 THEN DO;                                /* 奇数行のとき */
          CALL DEFINE(_ROW_, "STYLE", "STYLE=[BACKGROUND=Aliceblue]");
        END;
        ELSE DO;                                                  /* 偶数行のとき */
          CALL DEFINE(_ROW_, "STYLE", "STYLE=[BACKGROUND=CXccffff]");
      END;
    ENDCOMP;
  RUN;