SmartPad4i(Cobos4i)は、画面のインターフェースをHTML、バックエンドの業務ロジック部分をRPG/COBOLで作成できるツールです。RPG/COBOL側ではSETATRという処理(サブルーチン)を呼び出すことでHTML側の属性を簡単に変更することができます。
Tipsでは、SETATRの使用方法についてご紹介します。
SETATRについて
IBMi側のSETATRサブルーチンを利用すると、Designerで設定した要素のHTML属性を変更することができます。
例えば、新規商品登録画面などで、商品コードが入力完了するまで、商品名の入力欄が使用できないように設定することや、非表示にすることができます。
使用方法
SETATRはRPG/COBOL側から、フィールド(変数)を設定して呼びだします。
変数には以下のような設定が可能です。
- [SPFLDN]
処理対象要素のid属性名を設定 - [SPORDF]
サブファイル以外の場合 BLANKや’0000’を設定 サブファイルの場合は以下の設定が可能- ‘ALL ‘ : 全行
- ‘ODD ‘:奇数行
- ‘EVEN’ : 偶数行
- ‘0005’ : 行指定 (例 5行目
- [SPORD1]
サブファイル以外の場合はBLANKや’0000’を設定
サブファイルの場合はサブファイルの開始行(SPL1xx)を設定 - [SPELEM]
ラジオボタンの対応項目を設定 - [SPATRC]
以下のプロパティを要素に設定- ‘ ‘ : 前回の設定結果を取り消し
- ‘D ‘ : Disableを設定 (利用不可)
- ‘E ‘ : Enableを設定 (利用可能)
- ‘H ‘ : Hiddenを設定 (非表示)
- ‘R ‘ : Readonlyを設定 (読み取り専用)
- [SPCLAS]
クラス属性を設定- ‘ ‘ : 前の設定を消去
- 適用するクラス名を指定 ※クラス名は10文字まで
- [SPATRB]
SPATRBには、SETATRの全ての設定が含まれます。
SETATRの設定を全て消去する場合には、
*BLANKを指定 - [SPRETC]
SETATR実行結果を返却- ’00’ : 正常に処理完了
- ’01’ : SPFLDN が未設定
- ’02’ : 利用できない要素
- ’03’ : SPORDF 設定値が不正
- ’04’ : SPORD1 設定値が不正
- ’99’ : 100項目を超えた
SETATRの例(RPG / COBOL)
SETATR で id属性に”SNM”を設定した要素を非表示にする。
RPG
C MOVEL'SNM' SPFLDN フィールド名
C MOVEL*BLANK SPORDF サブファイル行数
C MOVEL*BLANK SPORD1 サブファイル開始行
C MOVEL*BLANK SPELEM
C MOVEL'H ' SPATRC 属性設定[H] 非表示
C MOVEL*BLANK SPCLAS クラス属性を設定
C MOVEL*BLANK SPRETC 返り値
C EXSR SETATR SETATR実行
COBOL
MOVE "SNM" TO SPFLDN フィールド名
MOVE SPACE TO SPORDF サブファイル行数
MOVE SPACE TO SPORD1 サブファイル開始行
MOVE SPACE TO SPELEM
MOVE "H " TO SPATRC 属性設定[H] 非表示
MOVE SPACE TO SPCLAS クラス属性を設定
MOVE SPACE TO SPRETC 返り値
PERFORM SETATR THRU SETATR-EXIT SETATR実行
また、SETATRを利用することで、要素のclass属性を
動的に変更することもできます。
この機能を利用して、値に問題のある入力覧の背景色等の表示設定を
変更することが可能です。
SETATR で id属性に”SNM”を設定した要素にclass属性[ERR]を設定
することで背景色を赤に変更する。
HTML
■HTML(CSS側)
<!-- CSS 背景色を赤 -->
<style>
.ERR { background-color: #FFCCCC; }
</style>
RPG
C MOVEL'SNM' SPFLDN フィールド名
C MOVEL*BLANK SPORDF サブファイル行数
C MOVEL*BLANK SPORD1 サブファイル開始行
C MOVEL*BLANK SPELEM
C MOVEL*BLANK SPATRC
C MOVEL'ERR' SPCLAS クラス名称を設定
C MOVEL*BLANK SPRETC 返り値
C EXSR SETATR SETATR実行
COBOL
MOVE "SNM" TO SPFLDN フィールド名
MOVE SPACE TO SPORDF サブファイル行数
MOVE SPACE TO SPORD1 サブファイル開始行
MOVE SPACE TO SPELEM
MOVE SPACE TO SPATRC
MOVE "ERR" TO SPCLAS クラス名称を設定
MOVE SPACE TO SPRETC 返り値
PERFORM SETATR THRU SETATR-EXIT SETATR実行