创建满足以下要的PF文件
HOMEWORK
Please refer below statement and complete the Credit/Debit RPGLE program.
Input: There are four paramieters as input entry.
- Credit(10character)
- Debit(10character)
- Transaction amount(11, numericno decimal)
- Transactiontype(1 character, value '1' means Debit, value '2' means credit)
Output: Input random entries when calling program.
- When transaction type is '1' display 'xxx debit xxx n yuan!' in the screen.
- When transaction type is '2', display 'xxx credit xxx n yuan!' in the screen.
- When the transaction type is neither '1' nor '2', display 'Wrong transaction type! '.
- When the transaction amount is negative,display 'Invalid transaction amount!'.
Hint:
- Cannot use numeric as a input parameter entry, so suggest define the transaction amount as character.
- How to decide the transaction amount is negative or positive.
作业
请参阅以下声明并完成贷记/借记 RPGLE 程序。
输入:有四个参数作为输入入口。
- 贷方(10 字符)
- 借方(10 字符)
- 交易金额(11 无小数数字型)
- 交易类型(1 个字符,值 “1”表示借方,值 “2”表示贷方)
输出:调用程序时输入随机条目。
- 当交易类型为 “1”时,显示“xxx debit xxx n yuan !” 在屏幕中。
- 当交易类型为 “2”时,显示“xxx credit xxx n yuan !” 在屏幕中。
- 当交易类型既不是“1”也不是“2”时,显示“Wrong transaction type!”在屏幕中。
- 交易金额为负数时,显示“'Invalid transaction amount!”在屏幕中。
提示:
- 不能使用数字作为输入参数条目,因此建议将交易金额定义为字符。
- 如何决定交易金额是负数还是正数。
变量及数据类型:
变量 | 类型 |
---|---|
CREDIT | 10A |
DEBIT | 10A |
TAMOUNT | 11A |
TTYPE | 1A |
程序流程图:
完整程序:
0000.01 H********************************************************
0000.02 H* WRITER : BANNY
0000.03 H* HOMEWORK : HT011
0000.04 H* DATE : 2022-01-01
0000.05 H********************************************************
0000.06 H********************************************************
0000.07 H* DEBUG
0000.08 H********************************************************
0000.09 H*
0001.00 HDEBUG(*YES)
0002.00 HDATFMT(*MDY)
0003.00 HTIMFMT(*HMS)
0004.00 H*
0005.00 D********************************************************
0006.00 D* DEFIND VARIATE
0007.00 D********************************************************
0008.00 D*
0009.00 DCREDIT S 10A
0010.00 DDEBIT S 10A
0011.00 DW1 S 52A
0012.00 DTAMOUNT S 11A
0013.00 DTTYPE S 1A
0014.00 D*
0015.00 C********************************************************
0016.00 C* MAIN FUNCTION
0017.00 C********************************************************
0018.00 C*
0019.00 C EXSR SR999
0020.00 C EXSR SR100
0021.00 C MOVE *ON *INLR
0022.00 C RETURN
0023.00 C*
0024.00 C********************************************************
0025.00 C* SR100 FUNCTION
0026.00 C********************************************************
0027.00 C SR100 BEGSR
0028.00 C*
0029.00 C IF (%SUBST(TAMOUNT:1:1) = '-')
0030.00 C EXSR SR404
0031.00 C*
0032.00 C ELSE
0033.00 C SELECT
0034.00 C WHEN TTYPE = '1'
0035.00 C EXSR SR200
0036.00 C WHEN TTYPE = '2'
0037.00 C EXSR SR300
0038.00 C OTHER
0039.00 C EXSR SR900
0040.00 C ENDSL
0041.00 C ENDIF
0042.00 C*
0043.00 C SR100E ENDSR
0044.00 C********************************************************
0045.00 C* SR200 FUNCTION TTYPE = '1'
0046.00 C********************************************************
0047.00 C SR200 BEGSR
0048.00 C*
0049.00 C EVAL W1 = CREDIT+'DEBIT'+DEBIT+TAMOUNT+'yuan!'
0050.00 C W1 DSPLY
0051.00 C*
0052.00 C SR200E ENDSR
0053.00 C********************************************************
0054.00 C* SR300 FUNCTION TTYPE = '2'
0055.00 C********************************************************
0056.00 C SR300 BEGSR
0057.00 C*
0058.00 C EVAL W1 = CREDIT+'CREDIT'+DEBIT+TAMOUNT+'yuan!'
0059.00 C W1 DSPLY
0060.00 C*
0061.00 C SR300E ENDSR
0062.00 C********************************************************
0063.00 C* SR404 FUNCTION TAMOUNT < 0
0064.00 C********************************************************
0065.00 C SR404 BEGSR
0066.00 C*
0067.00 C EVAL W1 = 'Invali transaction amount!'
0068.00 C W1 DSPLY
0069.00 C*
0070.00 C SR404E ENDSR
0071.00 C********************************************************
0072.00 C* SR900 FUNCTION TTYPE IS OTHER
0073.00 C********************************************************
0074.00 C SR900 BEGSR
0075.00 C*
0076.00 C EVAL W1 = 'Wrong transaction type!'
0077.00 C W1 DSPLY
0078.00 C*
0079.00 C SR900E ENDSR
0080.00 C********************************************************
0081.00 C* SR999 FUNCTION INIT
0082.00 C********************************************************
0083.00 C SR999 BEGSR
0084.00 C*
0085.00 C *ENTRY PLIST
0086.00 C PARM CREDIT
0087.00 C PARM DEBIT
0088.00 C PARM TAMOUNT
0089.00 C PARM TTYPE
0090.00 C*
0091.00 C SR999E ENDSR
变量定义:
变量名 | 说明 |
CREATE | 贷方名字 |
DEBIT | 借方名字 |
TAMOUNT | 交易金额 |
TTYPE | 交易类型 |
W1 | 打工仔,用于显示 |
0005.00 D********************************************************
0006.00 D* DEFIND VARIATE
0007.00 D********************************************************
0008.00 D*
0009.00 DCREDIT S 10A
0010.00 DDEBIT S 10A
0011.00 DW1 S 52A
0012.00 DTAMOUNT S 11A
0013.00 DTTYPE S 1A
0014.00 D*
变量初始化:
0080.00 C********************************************************
0081.00 C* SR999 FUNCTION INIT
0082.00 C********************************************************
0083.00 C SR999 BEGSR
0084.00 C*
0085.00 C *ENTRY PLIST
0086.00 C PARM CREDIT
0087.00 C PARM DEBIT
0088.00 C PARM TAMOUNT
0089.00 C PARM TTYPE
0090.00 C*
0091.00 C SR999E ENDSR
主函数:
0015.00 C********************************************************
0016.00 C* MAIN FUNCTION
0017.00 C********************************************************
0018.00 C*
0019.00 C EXSR SR999
0020.00 C EXSR SR100
0021.00 C MOVE *ON *INLR
0022.00 C RETURN
0023.00 C*
SR100函数:判断交易金额是否为正
交易金额为负数 | 进入SR404 |
交易金额为正数,交易类型为 ‘1’ | 进入SR200 |
交易金额为正数,交易类型为 ‘2’ | 进入SR300 |
交易金额为正数,交易类型为其他 | 进入SR900 |
0024.00 C********************************************************
0025.00 C* SR100 FUNCTION
0026.00 C********************************************************
0027.00 C SR100 BEGSR
0028.00 C*
0029.00 C IF (%SUBST(TAMOUNT:1:1) = '-')
0030.00 C EXSR SR404
0031.00 C*
0032.00 C ELSE
0033.00 C SELECT
0034.00 C WHEN TTYPE = '1'
0035.00 C EXSR SR200
0036.00 C WHEN TTYPE = '2'
0037.00 C EXSR SR300
0038.00 C OTHER
0039.00 C EXSR SR900
0040.00 C ENDSL
0041.00 C ENDIF
0042.00 C*
0043.00 C SR100E ENDSR
SR200函数:
交易类型为 '1' | 显示“xxx debit xxx n 元!” 在屏幕中。 |
0044.00 C********************************************************
0045.00 C* SR200 FUNCTION TTYPE = '1'
0046.00 C********************************************************
0047.00 C SR200 BEGSR
0048.00 C*
0049.00 C EVAL W1 = CREDIT+'DEBIT'+DEBIT+TAMOUNT+'yuan!'
0050.00 C W1 DSPLY
0051.00 C*
0052.00 C SR200E ENDSR
SR300函数:
交易类型为 '2' | 显示“xxx credit xxx n 元!” 在屏幕中。 |
0053.00 C********************************************************
0054.00 C* SR300 FUNCTION TTYPE = '2'
0055.00 C********************************************************
0056.00 C SR300 BEGSR
0057.00 C*
0058.00 C EVAL W1 = CREDIT+'CREDIT'+DEBIT+TAMOUNT+'yuan!'
0059.00 C W1 DSPLY
0060.00 C*
0061.00 C SR300E ENDSR
SR900函数:
交易类型为其他 | 显示“Wrong transaction type!”在屏幕中。 |
0071.00 C********************************************************
0072.00 C* SR900 FUNCTION TTYPE IS OTHER
0073.00 C********************************************************
0074.00 C SR900 BEGSR
0075.00 C*
0076.00 C EVAL W1 = 'Wrong transaction type!'
0077.00 C W1 DSPLY
0078.00 C*
0079.00 C SR900E ENDSR
SR404函数:
交易金额为负数 | 显示“'Invalid transaction amount!”在屏幕中。 |
0062.00 C********************************************************
0063.00 C* SR404 FUNCTION TAMOUNT < 0
0064.00 C********************************************************
0065.00 C SR404 BEGSR
0066.00 C*
0067.00 C EVAL W1 = 'Invali transaction amount!'
0068.00 C W1 DSPLY
0069.00 C*
0070.00 C SR404E ENDSR