Page History
[ |../../index.htm#lansa/uprint_e.htm]
現在地:
...
7.126.2 UPRINT の使用例
...
例1:以下のRDMLプログラムは、受注番号を入力するようユーザーに要求し、注文の詳細とそれに関連付けられた明細行を印刷します。
GROUP_BY NAME(#ORDERDET)
...
FIELDS(#ORDNUM #CUSTNUM #DATEDUE #ORDLIN #PRODUCT #QUANTITY #PRICE)
L1: REQUEST FIELDS(#ORDNUM)
FETCH FIELDS(#ORDERDET) FROM_FILE(ORDHDR)
...
WITH_KEY(#ORDNUM)
...
NOT_FOUND(L1)
...
ISSUE_MSG(*YES)
...
SELECT FIELDS(#ORDERDET)
...
FROM_FILE(ORDLIN)
...
WITH_KEY(#ORDNUM)
UPRINT FIELDS(#ORDERDET)
ENDSELECT
ENDPRINT
例2:ACCOUNTというファイルに以下のフィールドとデータが保持されているとします。 UPRINT FIELDS(#ORDERDET) ENDSELECT ENDPRINT
例2:ACCOUNTというファイルに以下のフィールドとデータが保持されているとします。
会社(#COMP) | 部門(#DIV) | 課(#DEPT) | 支出(#EXPEND) | 収入(#REVNU) |
|---|---|---|---|---|
01 | 1 | ADM | 400 | 576 |
" | " | MKT | 678 | 56 |
" | " | SAL | 123 | 6784 |
" | 2 | ADM | 46 | 52 |
" | " | SAL | 978 | 456 |
" | 3 | ACC | 456 | 678 |
" | " | SAL | 123 | 679 |
02 | 1 | ACC | 843 | 400 |
" | " | MKT | 23 |
" | " | SAL | 876 | 10 |
" | 2 | ACC |
43 |
...
ファイルのキーが#COMP、#DIV、#DEPTの場合、以下のRDMLプログラムによって、このファイルからページ番号と小計付きのレポートが生成されます。
GROUP_BY NAME(#ACCOUNTS)
...
FIELDS((
...
#COMP *
...
TOTLEVEL1 *NEWPAGE)
...
(
...
#DIV *TOTLEVEL2)
...
(
...
#DEPT *TOTLEVEL3)
...
(
...
#EXPEND *TOTAL)
...
(
...
#REVNU *TOTAL))
...
SELECT FIELDS(#ACCOUNTS)
...
FROM_FILE(ACCOUNT)
...
UPRINT FIELDS(#ACCOUNTS)
...
ENDSELECT
ENDPRINT
フィールド属性について、以下の点に注意してください。
- *NEWPAGE属性を使用すると、会社番号が変更されると必ず新しいページが開始されます。
- *TOTLEVELn属性によって、要求される合計「レベル制御切れ」を示します。この場合、会社、部門(会社内)、および課(会社の部門内)別の合計が必要になります。
- *TOTAL属性を使用すると、フィールドが合計されます。この場合、支出フィールドと収入フィールドが合計されます。
...
フィールド属性とその使用方法の詳細については、「フィールド属性」を参照してください。
また、LANSAがデータをソートしないことに注意してください。データは、UPRINTコマンドに渡された順序で印刷されます。情報の印刷順序に関し、プログラマの責任において、新しいページおよび合計レベル属性を「意味のあるもの」にしてください。
上記のRDMLプログラムは、以下のようにコーディングすることもできます。
SELECT FIELDS(#COMP #DIV #DEPT #EXPEND #REVNU) FROM_FILE(ACCOUNT)
...
UPRINT FIELDS((
...
#COMP *
...
TOTLEVEL1 *NEWPAGE)
...
(
...
#DIV *TOTLEVEL2)
...
(
...
#DEPT *TOTLEVEL3)
...
(
...
#EXPEND *TOTAL)
...
(
...
#REVNU *TOTAL))
...
ENDSELECT
ENDPRINT