[
|../../index.htm#lansa/l4wdev05_0155.htm]
現在地:
処理対象ファイル
次のフィールドから成る物理ファイル「TARGET」(売り上げ目標)
フィールド |
タイプ |
全桁数 |
説明 |
YEAR |
S |
2,0 |
年 |
MONTH |
S |
2,0 |
月 |
BRAND |
A |
5 |
ブランド番号/ID |
QUANTITY |
P |
9,0 |
売り上げ目標数量 |
DOLLARS |
P |
11,2 |
売り上げ目標金額 |
RDMLプログラム
<< Define work fields for this function >> DEFINE FIELD(#ERRCOUNT) TYPE(*DEC) LENGTH(7) DECIMALS(0) << Define group to appear on top of screen >> GROUP_BY NAME(#TIME) FIELDS(#YEAR #MONTH) << Define group that contains all fields to be inserted >> GROUP_BY NAME(#TARGET) FIELDS(#YEAR #MONTH #BRAND #QUANTITY #DOLLARS) << Define list to be used for data entry >> DEF_LIST NAME(#VALUES) FIELDS(#BRAND #QUANTITY #DOLLARS) << Loop until EXIT or MENU function key used >> BEGIN_LOOP << Clear screen and initialize list with 20 entries >> CHANGE FIELD(#TARGET) TO(*NULL) SET_MODE TO(*ADD) INZ_LIST NAMED(#VALUES) NUM_ENTRYS(20) << Accept input until no errors exist in data >> DOUNTIL COND('#ERRCOUNT = 0') SET_MODE TO(*ADD) DISPLAY FIELDS(#TIME) BROWSELIST(#VALUES) << Process all not "null" and not "accepted" records >> CHANGE FIELD(#ERRCOUNT) TO(0) SELECTLIST NAMED(#VALUES) GET_ENTRYS(*NOTNULL *ADD) INSERT FIELDS(#TARGET) TO_FILE(TARGET) VAL_ERROR(L10) L10 IF_STATUS IS_NOT(*OKAY) CHANGE FIELD(#ERRCOUNT) TO('#ERRCOUNT + 1') SET_MODE TO(*ADD) ELSE SET_MODE TO(*DISPLAY) ENDIF UPD_ENTRY IN_LIST(#VALUES) ENDIF ENDSELECT ENDUNTIL END_LOOP
着目点:
INSERTコマンドでレコードが受理されたか否かを明示するようにしたい場合は、RDMLコマンドを次のように修正してください。
<< Define work fields for this function >> DEFINE FIELD(#ERRCOUNT) TYPE(*DEC) LENGTH(7) DECIMALS(0) DEFINE FIELD(#ACCEPTED) TYPE(*CHAR) LENGTH(3) COLHDG('Target' 'has been' 'Accepted') << Define group to appear on top of screen >> GROUP_BY NAME(#TIME) FIELDS(#YEAR #MONTH) << Define group that contains all fields to be inserted >> GROUP_BY NAME(#TARGET) FIELDS(#YEAR #MONTH #BRAND #QUANTITY #DOLLARS) << Define list to be used for data entry >> DEF_LIST NAME(#VALUES) FIELDS(#BRAND #QUANTITY #DOLLARS (#ACCEPTED *OUTPUT)) << Loop until EXIT or MENU function key used >> BEGIN_LOOP << Clear screen and initialize list with 20 entries >> CHANGE FIELD(#TIME) TO(*NULL) CHANGE FIELD(#VALUES) TO(*NULL) SET_MODE TO(*ADD) INZ_LIST NAMED(#VALUES) NUM_ENTRYS(20) << Accept input until no errors exist in data >> DOUNTIL COND('#ERRCOUNT = 0') SET_MODE TO(*ADD) DISPLAY FIELDS(#TIME) BROWSELIST(#VALUES) << Process all not "null" and not "accepted" records >> CHANGE FIELD(#ERRCOUNT) TO(0) SELECTLIST NAMED(#VALUES) GET_ENTRYS(*NOTNULL *ADD) INSERT FIELDS(#TARGET) TO_FILE(TARGET) VAL_ERROR(L10) L10 IF_STATUS IS_NOT(*OKAY) CHANGE FIELD(#ERRCOUNT) TO('#ERRCOUNT 1') SET_MODE TO(*ADD) ELSE SET_MODE TO(*DISPLAY) CHANGE FIELD(#ACCEPTED) TO(YES) ENDIF UPD_ENTRY IN_LIST(#VALUES) ENDIF ENDSELECT ENDUNTIL END_LOOP The main processing loop of the program could be modified to allow updates to "accepted" records like this: << Define work fields for this function >> DEFINE FIELD(#ERRCOUNT) TYPE(*DEC) LENGTH(7) DECIMALS(0) DEFINE FIELD(#ADD_RRN) TYPE(*DEC) LENGTH(15) DECIMALS(0) DEFINE FIELD(#ACCEPTED) TYPE(*CHAR) LENGTH(3) COLHDG('Target' 'has been' 'Accepted') << Define group to appear on top of screen >> GROUP_BY NAME(#TIME) FIELDS(#YEAR #MONTH) << Define group that contains all fields to be inserted >> GROUP_BY NAME(#TARGET) FIELDS(#YEAR #MONTH #BRAND #QUANTITY #DOLLARS) << Define list to be used for data entry >> DEF_LIST NAME(#VALUES) FIELDS(#BRAND #QUANTITY #DOLLARS (#ACCEPTED *OUTPUT)(#ADD_RRN *HIDDEN)) << Loop until EXIT or MENU function key used >> BEGIN_LOOP << Clear screen and initialize list with 20 entries >> CHANGE FIELD(#TIME) TO(*NULL) CHANGE FIELD(#VALUES) TO(*NULL) SET_MODE TO(*ADD) INZ_LIST NAMED(#VALUES) NUM_ENTRYS(20) DOUNTIL COND('#ERRCOUNT = 0') SET_MODE TO(*ADD) DISPLAY FIELDS(#TIME) BROWSELIST(#VALUES) << Process all not "null" records >> CHANGE FIELD(#ERRCOUNT) TO(0) SELECTLIST NAMED(#VALUES) GET_ENTRYS(*NOTNULL) IF COND('#ACCEPTED = YES') UPDATE FIELDS(#TARGET) IN_FILE(TARGET) VAL_ERROR(L10) WITH_RRN(#ADD_RRN) ELSE INSERT FIELDS(#TARGET) TO_FILE(TARGET) VAL_ERROR(L10) RETURN_RRN(#ADD_RRN) ENDIF L10 IF_STATUS IS_NOT(*OKAY) CHANGE FIELD(#ERRCOUNT) TO('#ERRCOUNT 1') ELSE CHANGE FIELD(#ACCEPTED) TO(YES) ENDIF SET_MODE TO(*ADD) UPD_ENTRY IN_LIST(#VALUES) ENDIF ENDSELECT ENDUNTIL END_LOOP
[
|../../index.htm#lansa/l4wdev05_0155.htm]