- 论坛徽章:
- 0
|
00010F*
00020F* SAMPLE RPG PROGRAM TO TEST APPEND
00030FCUSMSTP UF E K DISK A
00040FCUSDSPF CF E WORKSTN
00050FCUSPRTF O E 10 PRINTER
00060 *
00070C START TAG
00080C EXFMTPROMPT
00090C N21 ACTNUM CHAINCUSMST 30
00100C ADD IFNE 'A'
00110C *IN30 ANDEQ'1'
00120C SETON 40
00130C N21 40 GOTO START
00140C END
00150C N21 EXFMTRESPONSE
00160C N21 30 WRITECUSMST
00170C N21N30 UPDATCUSMST
00180C N21 GOTO START
00190C WRITEHEADER
00200C PRINT TAG
00210C READ CUSMST 45
00220C N45 10 WRITEHEADER
00230C 10 SETOF 10
00240C N45 WRITEDETAIL
00250C N45 GOTO PRINT
00260C CLOSE*ALL
00270C SETON LR
00030行,定义了一个文件CUSMSTP,U表示可以对文件进行修改,F表示这个文件是全过程文件,E表示这是外部文件,K表示这个文件有关键字,DISK表示是磁盘文件,A表示可以对文件进行增加记录的操作。
00040行,定义文件CUSDSPF,C表示可以对文件进行增加和删除记录的操作,但是没有改变记录的功能,F表示是全过程文件,E表示是外部文件,WORKSTN表示是工作站文件,其实通常表示是一个显示文件。
00050行,定义了文件CUSPRTF,O表示是输出文件,E表示是外部文件,10是溢出指示器,对应于这个文件说,就是当本页面的最后一行被打印以后(要换页的时候),就会置为ON。PRINTER说明这是一个打印文件。
00070行,定义一个TAG,TAG名是START,这是与GO TO相对应的。其实就是一个位置标记。
00080行,PROMPT是显示文件中的记录格式,这一句话就是显示记录PROMPT。
00090行,表示当指示器21是OFF的时候执行这一条语句,本语句表示根据ACTNUM定位CUSMST(CUSMSTP文件中的一个记录),就是找到文件中的一条记录,当查询出错时,指示器30置空。
00100和00140行表示,当ADD(PROMPT中的一个字段)不等于'A'时,并且指示器30为ON(ON='1')时,则把指示器40置为ON。如果指示21为OFF,并且40为ON,则跳回到START执行。
000150行表示当指示器21为OFF时,显示画面RESPONSE(CUSDSPF中的一个记录)。
000160行表示指示器21为OFF,30为ON时,写一条新记录到CUSMST中,如果指示器21和30都为OFF时,则更新当前记录。
000170行表示指示器21为OFF时,则跳转到START。
000190行表示写一条记录HEADER(因为HEADER是打印文件中的记录,其实也就是把记录格式HEADER打印出来)。
00200行,同00070行。
00210行,读CUSMST中的记录(究竟是哪条记录与00090行的定位有关)。
00220行,当指示器45为OFF,10为ON时打印HEADER记录格式。其实就是当还能读到数据,并且要换页的时候打印HEADER。
00230行,把指示器10置为OFF。
00240行,当指示器45为OFF,打印DETAIL记录,其实就是当还能读到记录时,打印记录内容。
00250行,当指示器45为OFF,跳回到PRINT处。
00260行,关闭所有打开的文件。
00270行,结束程序。
自己把代码拷贝到400里面,对着规范表看.OK |
|