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

 

试就以下数据,练习这些指令来解决这四个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有两笔)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值