ステップ5. Start Date列の書式を設定する

LANSA Integrator

ステップ5. Start Date列の書式を設定する


現在のソリューションには、Start Date列の書式が設定されないという問題があります。Start Dateは、符号付きの数値フィールドに基づきます(長さは6桁)。このステップでは、Start Date列を日付タイプのフィールドに変換し、作業リストに入れます。また、ExcelのStart Date列の書式を日付セルとして設定することもできます。

1.   ファイルからSTARTDTERを読み込んで変換し、作業リストに日付作業フィールドを入れます。読み込むフィールドのGROUP_BYを挿入してSELECTコマンドでこれを使用するようにファンクションを変更します。コードは以下のようになります。

GROUP_BY NAME(#EMP_GRP) FIELDS(#empno #surname #givename #startdter #phonehme #salary)

. . . . .

SELECT FIELDS(#EMP_GRP) FROM_FILE(pslmst1) WITH_KEY(#deptment #section) NBR_KEYS(*compute)

2.   作業リストで、フィールドSTARTDTERをSTD_DATEXで置き換えます。

3.   SELECTループ内で、以下の操作を行うロジックを追加します。

·         STARTDTERが日付(YYMMDD形式)かどうかを確認する。

·         日付(YYMMDD形式)の場合、STARTDTERをフィールドSTD_DATEXに変換する。

·         日付(YYMMDD形式)ではない場合、STD_DATEXを*SQLNULLに設定する。

      コードは以下のようになります。

CLR_LIST NAMED(#employs)
SELECT FIELDS(#EMP_GRP) FROM_FILE(pslmst1) WITH_KEY(#deptment #section) NBR_KEYS(*compute)
IF (#STARTDTER.IsDate( YYMMDD ))
#Std_Datex := #STARTDTER.AsDate( YYMMDD )
ELSE
#Std_Datex := *SQLNULL
ENDIF
ADD_ENTRY TO_LIST(#employs)
ENDSELECT
 

4.   EMPLOYSのDEF_LISTコマンドを変更し、フィールド LISTCOUNTを使ったカウンターを入れます。コードは以下のようになります。

Def_List Name(#employs) Fields(#empno #givename #surname #STD_DATEX #PHONEHME #salary) Counter(#listcount) Type(*working) Entrys(100)

 

5.   Start Date列の書式を日付として設定するDEFINEコマンドを追加します。コードは以下のようになります。

* Format Start Date Column

#std_num := #listcount + 3

#jsmxcmd := 'DEFINE OBJECT(*CELLFORMAT) COLUMN(5) RANGE(5,#std_num.AsString) TYPE(*DATE) FORMAT(*FORMAT2)'

USE BUILTIN(jsmx_command) WITH_ARGS(#jsmxhdle1 #jsmxcmd) TO_GET(#jsmsts #jsmmsg)

EXECUTE SUBROUTINE(CHECK_STS)

6.   Excelでドキュメントを開くと、Salary列の幅を調整する必要があることが分かります。これは、複数の給与のサイズがあるためです(1,234,456.50など)。幅を設定するには、DEFINEコマンドでOBJECT(*COLUMNVIEW)を使用してください。コードは以下のようになります。

* Set Column width - Salary

#jsmxcmd := 'DEFINE OBJECT(*COLUMNVIEW) COLUMN(7) WIDTH(12)'

USE BUILTIN(jsmx_command) WITH_ARGS(#jsmxhdle1 #jsmxcmd) TO_GET(#jsmsts #jsmmsg)

EXECUTE SUBROUTINE(CHECK_STS)

7.   ファンクションiiiFN14を再コンパイルして再度テストします。ドキュメントは以下のようになります。