您的位置:首页 > 其它

[原创]今天看到一RPG处理数据的题目,不知各位将如何解答和解释这几条常见的指令?

2009-03-25 21:25 387 查看
试就以下数据,练习这些指令来解决这四个Question

1.先解以下7行常见容易搞混淆的取数指令的区别和各自用法?
IFEQ XXX ENDIF
IFEQ XXX ELSE XXX ENDIF
SETLL
READ
READE
CHAIN
DOWEQ XXX ENDDO


2.再解Question

1) Find the total amount of all item
2) Find the amount of item A
3) Find the total amount of item which greater than 100
4) Find the total amount of item type FR

Data
Item# Item type Amount
A FR 100
B FR 200
C FG 700
D PA 50

高手的你们快行动起来,说出你的解题思路和意思。
以上指令很易混淆,请用你的理解来说明。。。。

1.先解以下7行常见容易搞混淆的取数指令的区别和各自用法?

IFEQ XXX ENDIF条件判断、满足条件则执行相关语句

IFEQ XXX ELSE XXX ENDIF条件分支判断,满足条件,则执行相关语句,不满足,则执行另外的语句。。。。多一个ELSE会多一个不满足条件,执行另外程序的

SETLL 设置低界,把条件定位到键字相对的记录号,大于或者等于因子1中说明的检索自变量的下一条记录 一般和*LOVAL连用从最初的那行数据开始读起

Leave 操作把控制从DO组转给ENDDO操作后的语句。它是跳出DO循环的意思,会执行DO之后的语句,leave一般是用在用在DO、DOU、DOUxx或者DOWxx循环中,不能在DO组外部使用

READ 读一个记录,无比较.read无比较的意思是其前面无比较因子(变数)

READE 读等于键字的记录,有比较.reade前面会有个做比较的因子(变数,检索自变量)

CHAIN从文件中随机检索,chain与read虽同样是读档案找要检索的数据,但是chain用指标读时只会找一行(指标的进度:从什么地方开始读这 个档案),read可找多行,如Q2的问题只需读一行数据时就可以用chain。如想确认到底是用read读还是用chain的话可先确定指标是从哪一行 开始读,chain只会读一行,read可以读很多行

DOWEQ XXX ENDDO 执行一组满足给定条件的操作(看条件跑多次),和read相比,他可跑多次,read只能读一次

2.再解Question
1) Find the total amount of all item
2) Find the amount of item A
3) Find the total amount of item which greater than 100
4) Find the total amount of item type FR

Data
Item# Item type Amount
A FR 100
B FR 200
C FG 700
D PA 50

解答方法:
1)
Read Itemtypefile 90
*in90 DOWEQ*OFF
AddRamount AmountTotal
Read Itemtypefile 90
Enddo

2)keyItemA ChainiItemtypefile
*in90 IFEQ*OFF
Z-ADDamount @TotalAmt
ENDIF

3)Read itemtypefile 91
*in91 DOWEQ*OFF
IF Amount GE'100'
ADDAmount @TotalAmt
ENDIF
Read itemtypefile 91
ENDDO
这里应用ADD累加,需把所有大于100的amount累加@totalAmt.程序会读多次大于100的amount。而Q2只会有一个ItemA通过 KeyItemA chainXXX筛选检索出来的ItemA的amount,只有一笔数,是不需要累加,故用Z-ADD.

4)
keyFR ReadeItemtypefile 92 /*KeyFR是搜寻查找ItemType这个栏位中的FR 然后按之排序/

*in92 DOWEQ*OFF

ADDamount @TotalAmt /*把上面查找出的ItemTYPe栏位中的FR的amount进行累加*/

KeyFR Reade itemtypefile 92

ENDDO

这里应是ADD,因是用KEY reade读出的keyType中的FR的金额,是需读多次的,是需把读多次读出的FR的金额进行累加 才会有FR 的@TotalAmt。和Q2中用chain筛选检索出的keyItemA的金额不一样(ItemA的金额chain检索出后的ItemA的amount 只有一笔,而这里检索出来的FR的amount有两笔)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐