AS400公司内部招聘测
测试题:
一、 环境要求:
1、 在每个人自己的库下建立源文件TESTSRC,用来存放程序与文件3的源码 2、 程序名:PGM_姓名缩写,文件名:FILE3_姓名缩写
3、 所有目标均编译在自己的库下
二、 试题要求
1、 现需要对某公司客户进行代发代扣金额处理,文件1为公司所有员工信息(已有数据),
文件2为代发代扣信息(已有数据),文件3为代发代扣结果文件(需要建立并由程序
写入数据),文件1和文件2的源码在LIBTEST/SRCPF,可以查询文件键字等信息。 2、 使用文件:
文件1,文件名:FILE1
字段名称 类型 长度 备注
部门编号 , 3 001,002 客户号 , 10
姓名 , 10
账户余额 , 15,2 初始值不修改 处理标志 , 1 0未处理1已处理2无代发代扣
信息
文件2,文件名:FILE2
字段名称 类型 长度 备注
部门编号 , 3
客户号 , 10
操作类别 , 1 1:代发2:代扣 代发代扣, 15,2
金额
文件3,文件名:FILE3_姓名缩写
字段名称 类型 长度 备注
部门编号 , 3 K
客户号 , 10 K
姓名 , 10
代发代扣, 15,2
金额
账户余额 , 15,2 最新余额 操作日期 , 10 取系统日期 操作人员 ? 10 本人姓名 备注 , 40 “无代发代扣信息” 3、 程序要求:
1) 将LIBTEST下的文件FILE1、FILE2拷贝到自己的库里(包括数据),后续操作使
用自己库下的文件。
2) 建立文件FILE3,记录格式及字段名参照FILE1和FILE2的格式。
3) 程序入口为部门编号(执行时001或002任选其一)。
4) 将文件1中符合条件的记录按文件2中的数据进行处理,结果写入文件3;并修改
文件1中的处理标志。
5) 如代发代扣金额为0则本次没有代发代扣,在备注中写入“无代发代扣信息”
6) 修改和写入文件要求使用事务控制(COMMIT),但程序中不加放COMMIT或
ROLLBACK操作。
FILE1
*************** Beginning of data ********************************
A UNIQUE
A R RECORD1
A TEXT(' 文件, ')
A F1DEPNO 3A
A COLHDG(' 部门编号 ')
A TEXT(' 部门编号 ')
A F1CUSNO 10A
A COLHDG(' 客户号 ')
A TEXT(' 客户号 ')
A F1NAME 10O
A COLHDG(' 姓名 ')
A TEXT(' 姓名 ')
A F1BAL 15S 2
A COLHDG(' 金额 ')
A TEXT(' 金额 ')
A F1FLAG 1A
A COLHDG(' 处理标志 ')
A TEXT(' 处理标志 ')
A*0 未处理 , 已处理 , 无代发代扣信息
A K F1DEPNO
A K F1CUSNO ****************** End of data ****************************************
FILE2
*************** Beginning of data *************************************
A R RECORD2
A TEXT(' 文件, ')
A F2DEPNO 3A
A COLHDG(' 部门编号 ')
A TEXT(' 部门编号 ')
A F2CUSNO 10A
A COLHDG(' 客户号 ')
A TEXT(' 客户号 ')
A F2TYPE 1A
A COLHDG(' 操作类别 ')
A TEXT(' 操作类别 ')
A*1 代发 2 代扣
A F2AMT 15S 2
A COLHDG(' 代发代扣金额 ')
A TEXT(' 代发代扣金额 ')
A K F2DEPNO ****************** End of data ***************************************
FILE3_LQ
*************** Beginning of data *************************************
A R RECORD3
A TEXT(' 文件 ')
A F3DEPNO 3A
A COLHDG(' 部门编号 ')
A TEXT(' 部门编号 ')
A F3CUSNO 10A
A COLHDG(' 客户号 ')
A TEXT(' 客户号 ')
A F3NAME 10O
A COLHDG(' 姓名 ')
A TEXT(' 姓名 ')
A F3AMT 15S 2
A COLHDG(' 代发代扣金额 ')
A TEXT(' 代发代扣金额 ')
A F3BAL 15S 2
A COLHDG(' 金额 ')
A F3DAT L COLHDG(' 操作日期 ')
A TEXT(' 取系统时间 ')
A F3PEP 10A COLHDG(' 操作人员 ')
A TEXT(' 本人姓名 ')
A F3NOT 40A COLHDG(' 备注 ')
A TEXT(' 备注 ')
A K F3DEPNO
A K F3CUSNO ****************** End of data ****************************************
PGM_LQ
*************** Beginning of data ************************************* FFILE1 UF E K DISK COMMIT FFILE2 IF E K DISK FFILE3_LQ O E DISK COMMIT DDEPNO S 3A C ** 程序入口 入号参数: DEPNO C *ENTRY PLIST C PARM DEPNO C
C K_FILE1 KLIST C KFLD F1DEPNO C C K_FILE2 KLIST C KFLD F2DEPNO C KFLD F2CUSNO C ** 遍历查询 FILE1 中的每一个用户信息
C EVAL F1DEPNO=DEPNO C K_FILE1 SETLL RECORD1 C K_FILE1 READE RECORD1 C DOW NOT%EOF C CLEAR RECORD3 ** 根据 FILE1 查询出的用户信息 查找 FILE2 表中操作类别
** 根据操作类别 1 :代发 2 :代扣 无操作类别信息 这三种情况
** 分别往 FILE3_LQ 表中添加相应信息
C C EVAL F2DEPNO=DEPNO C EVAL F2CUSNO=F1CUSNO C K_FILE2 CHAIN RECORD2 C IF %FOUND C ** 操作类别为, ( 代发 ) C IF F2TYPE='1' C IF F2AMT=0 C EVAL F3DEPNO=DEPNO C EVAL F3CUSNO=F1CUSNO C EVAL F3NAME=F1NAME C EVAL F3AMT=F2AMT C TIME F3DAT C EVAL F3PEP=' 李奇 '
C EVAL F3NOT=' 无代发代扣信息 '
C WRITE RECORD3 C EVAL F1FLAG='1' C UPDATE RECORD1 C C ELSE C C EVAL F1FLAG='2' C EVAL F3DEPNO=DEPNO C EVAL F3CUSNO=F1CUSNO C EVAL F3NAME=F1NAME C EVAL F3AMT=F2AMT C EVAL F3BAL=F1BAL+F2AMT
C TIME F3DAT C EVAL F3PEP=' 李奇 '
C WRITE RECORD3 C EVAL F1FLAG='1' C UPDATE RECORD1 C ENDIF C ENDIF C ** 操作类别为, ( 代扣 )
C IF F2TYPE='2' C IF F2AMT=0 C EVAL F3DEPNO=DEPNO C EVAL F3CUSNO=F1CUSNO C EVAL F3NAME=F1NAME C EVAL F3AMT=F2AMT C TIME F3DAT C EVAL F3PEP=' 李奇 '
C EVAL F3NOT=' 无代发代扣信息 '
C WRITE RECORD3 C EVAL F1FLAG='1' C UPDATE RECORD1 C C ELSE C C EVAL F3DEPNO=DEPNO C EVAL F3CUSNO=F1CUSNO C EVAL F3NAME=F1NAME C EVAL F3AMT=F2AMT C EVAL F3BAL=F1BAL-F2AMT C TIME F3DAT C EVAL F3PEP=' 李奇 '
C WRITE RECORD3 C EVAL F1FLAG='1' C UPDATE RECORD1 C ENDIF C ENDIF C C ELSE ** 无操作类别
C C EVAL F3DEPNO=DEPNO C EVAL F3CUSNO=F1CUSNO C EVAL F3NAME=F1NAME C EVAL F3AMT=F2AMT
C TIME F3DAT C EVAL F3PEP=' 李奇 '
C EVAL F3NOT=' 无代发代扣信息 '
C WRITE RECORD3 C EVAL F1FLAG='2' C UPDATE RECORD1 C ENDIF C K_FILE1 READE RECORD1 C ENDDO C C SETON LR ****************** End of data ****************************************