当前位置:首页 >

大家帮忙来找茬(到底RPG程序错在哪?)


[code:1:63ad37c5f3]下图是维护程序主档文件的DDS。
          *************** Beginning of data ************************************* 
0001.00      A* CUSTOMER MASTER FILE--CUSTSTR                                   
0002.00      A          R CSTMST                                                
0003.00      A            CUST#          5S 0             TEXT(’CUSTOMER NUMBER‘)                      
0004.00      A            CSTNAM        20                TEXT(’CUSTOMER NAME’)           
0005.00      A            CSTAD1        20                TEXT(’CUSTOMER ADDRESS‘)                      
0006.00      A            CSTAD2        20                TEXT(’CUSTOMER ADDRESS’)                      
0007.00      A            CSTCTY        20                TEXT(’CUSTOMER CITY‘)                      
0008.00      A            CSTSTE         2                TEXT(’CUSTOMER STATE’)                      
0009.00      A            CSTZIP         5S 0             TEXT(’CUSTOMER ZIP CODE‘)                      
0010.00      A          K CUST#                                                 
        ****************** End of data ****************************************   

下图是客户主档文件查询的显示设备文件的DDS。
 SEU==>                                                                  CSTENT 
 FMT DP .....AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++ 
        *************** Beginning of data ************************************* 
0001.00      A                                      REF(CUSTMSTR)               
0002.00      A                                      CHGINPDFT(CS)               
0003.00      A                                      PRINT(QSYSPRT)              
0004.00      A                                      INDARA                      
0005.00      A          R HDRSCN                                                
0006.00      A                                      TEXT(PROMPT FOR CUST NUMBE 
0007.00      A                                      CA03(03 END OF INQUIRY)   
0008.00      A                                      CA05(05 ADD MODE)         
0009.00      A                                      CA06(06 UPDATE MODE)      
0010.00      A                                      CA07(07 DELETE MODE)      
0011.00      A                                      CA08(08 DISPLAY MODE)     
0012.00      A            MODE           8A  O  1 40DSPATR(HI)                  
0013.00      A                                  1 13MODE                      
0014.00      A                                      DSPATR(HI)                  
0015.00      A                                  2  4TIME                        
0016.00      A                                      DSPATR(HI)                  
0017.00      A                                  2 28CUSTOMER FILE MAIN        
0018.00      A                                      DSPATR(RI)                  
0019.00      A                                  2 70DATE                        
0020.00      A                                      EDTCDE(Y) DSPATR(HI)        
0021.00      A            CUST#     R     Y  I 10 25DSPATR(CS)                  
0022.00      A                                      CHECK(RZ)                   
0023.00      A  51                                  ERRMSG(CUSTOMER ON FILE 5 
0024.00      A  52                                  ERRMSG(NOT ONFILE 52)     
0025.00      A                                 10 33<--ENTER CUSTOMER NUMBER  
0026.00      A                                      DSPATR(HI)                  
0027.00      A                                 23  4F3 END JOB                
0028.00      A                                 23 21F5 ADD                    
0029.00      A                                 23 34F6 UPDATE                 
0030.00      A                                 23 50F7 DELETE                 
0031.00      A                                 23 66F8 DISPLAY                
0032.00      A          R CSTINQ                    TEXT(DISPLAY CUST INFO)   
0033.00      A                                      CA12(12 PREVIOUS SCREEN)  
0034.00      A*                                                                
0035.00      A            MODE           8   O  1  4DSPATR(HI)  
0036.00      A                                  1 13MODE                     
0037.00      A                                      DSPATR(HI)                 
0038.00      A                                  2  4TIME                       
0039.00      A                                      DSPATR(HI)                 
0040.00      A                                  2 28CUSTOMER FILE MAINTENANCE
0041.00      A                                      DSPATR(HI RI)              
0042.00      A                                  2 70DATE EDTCDE(Y) DSPATR(HI)  
0043.00      A                                  4 14CUSTOMER                 
0044.00      A                                      DSPATR(HI UL)              
0045.00      A            CUST#     R        O  4 25DSPATR(HI)                 
0046.00      A            CSTNAM    R        B  6 25DSPATR(CS)                 
0047.00      A  04                                  DSPATR(PR)                 
0048.00      A            CSTAD1    R        B  7 25DSPATR(CS)                 
0049.00      A  04                                  DSPATR(PR)                 
0050.00      A            CSTAD2    R        B  8 25DSPATR(CS)                 
0051.00      A  04                                  DSPATR(PR)                 
0052.00      A            CSTCTY    R        B  9 25DSPATR(CS)                 
0053.00      A  04                                  DSPATR(PR)                                                                               
0054.00      A            CSTSTE    R        B 10 25DSPATR(CS)                 
0055.00      A  04                                  DSPATR(PR)                 
0056.00      A            CSTZIP    R        B 10 40DSPATR(CS)                 
0056.01                                             EDTCDE(Z)                  
0057.00      A  04                                  DSPATR(PR)                 
0057.01      A                                 23  2F12 CANCEL               
0057.02      A            MODE1          8   O 23 20                           
0058.00      A          R CSTBLD                    TEXT(ADD CUST RECORD)    
0059.00      A                                      CA12(12 PREVIOUS SCREEN) 
0060.00      A            MODE           8   O  1 40DSPATR(HI)                 
0061.00      A                                  1 13MODE DSPATR(HI)          
0062.00      A                                  2  4TIME DSPATR(HI)            
0063.00      A                                  2 28CUSTOMER FILE MAINTENANCE
0064.00      A                                      DSPATR(HI)                 
0065.00      A                                  2 70DATE EDTCDE(Y) DSPATR(HI)  
0066.00      A                                  4 14CUSTOMER: DSPATR(HI UL)  
0067.00      A            CUST#     R        O  4 25DSPATR(HI)                 
0068.00      A                                  6 20NAME DSPATR(HI)
0069.00      A            CSTNAM    R        I  6 25                            
0070.00      A                                  7 17ADDRESS DSPATR(HI)        
0071.00      A            CSTAD1    R        I  7 25                            
0072.00      A                                  8 17ADDRESS DSPATR(HI)        
0073.00      A            CSTAD2    R        I  8 25                            
0074.00      A                                  9 20CITY DSPATR(HI)           
0075.00      A            CSTCTY    R        I  9 25                            
0076.00      A                                 10 19STATE DSPATR(HI)          
0077.00      A            CSTSTE    R        I 10 25                            
0078.00      A                                 10 36ZIP DSPATR(HI)            
0079.00      A            CSTZIP    R        I 10 40                            
0080.00      A                                 23  2CANCEL ADDITION           
        ****************** End of data **************************************** 
                                                                                                                                                               
这个显示文件的DDS包含3种记录格式:HDRSCN 和CSTINQ 和 CSTBLD。HDRSCN记录格式提示客户和处理方式,CSTINQ记录被用于更新,删除和显示方式。

下面这个程序维护客户主档文件,具有增加,修改和删除功能,也可以用这个程序进行查询,
  该程序首先设置处理的缺省(显示)方式,且显示客户维护提示屏,工作站可以按功能键3,请求终止作业,否则,用户输入客户号且按ENTER,用户可以通过功能键 5增加   6更新   7删除  8显示。
 为了增加新记录到文件中,程序使用客户号做搜索变元检索主档文件,如果该记录在文件中不存在,程序显示CSTBLD屏幕,允许用户输入一新客户记录。如果该记录已在文件中,则显示错误信息,用户可以按功能键12(它把指示符12为ON)取消增加操作且释放该记录。否则,用户输入新客户信息到输入域且写到主档文件中。
  为更新、删除、或显示一条现存记录,程序用客户号作为搜索变元检索主档文件。如果该客户记录存在于文件中,程序显示客户文件查询屏幕CSTINQ,如果记录不在文件,则显示一个错误信息,如果处理方式是显示或是删除,则输入域是写保护的,否则,用户可输入新信息到输入域中,更新客户记录,用户可按功能键12,它设置指示符12为ON,来取消更新或删除操作,且释放该记录。 
                                                                                
        *************** Beginning of data ***********************************
0001.00      FCUSTMSTRUF  E           K        DISK                  A        
0002.00      FCSTENT  CF  E                    WORKSTN                       
0003.00      C           CSTKEY    KLIST                                     
0004.00      C                     KFLD           CUST#                      
0005.00      C                     MOVE DISPLAY MODE                       
0006.00      C                     EXFMTHDRSCN                               
0007.00      C           *IN03     DOWEQ0                                  
0008.00      C                     EXSR SETMOD                               
0009.00      C           CUST#     IFNE *ZERO                                
0010.00      C           MODE      CASEQADD     ADDSUB                     
0011.00      C           MODE      CASEQUPDATE  UPDSUB                     
0012.00      C           MODE      CASEQDELETE  DELSUB                     
0013.00      C           MODE      CASEQDISPLAY INQSUB                     
0014.00      C                     END                                       
0015.00      C                     END                                       
0016.00      C                     EXFMTHDRSCN                               
0017.00      C                     END     
0018.00      C                     MOVE 1       *INLR                    
0019.00      C           ADDSUB    BEGSR                                   
0020.00      C           CSTKEY    CHAINCSTMST               50            
0021.00      C           *IN50     IFEQ 0                                
0022.00      C                     MOVE 1       *IN51                    
0023.00      C                     ELSE                                    
0024.00      C                     MOVE 0       *IN51                    
0025.00      C                     MOVE *BLANK    CSTNAM                   
0026.00      C                     MOVE *BLANK    CSTAD1                   
0027.00      C                     MOVE *BLANK    CSTAD2                   
0028.00      C                     MOVE *BLANK    CSTCTY                   
0029.00      C                     MOVE *BLANK    CSTSTE                   
0030.00      C                     MOVE *BLANK    CSTZIP                   
0031.00      C                     EXFMTCSTBLD                             
0032.00      C           *IN12     IFEQ 0                                
0033.00      C                     WRITECSTMST                             
0034.00      C                     END                                     
0035.00      C                     END                                          
0036.00      C                     ENDSR                                        
0037.00      C**************************************************                                                                                
0038.00      C           UPDSUB    BEGSR                                
0039.00      C                     MOVE 0       *IN04                 
0040.00      C           CSTKEY    CHAINCSTMST               52         
0041.00      C           *IN52     IFEQ 0                             
0042.00      C                     EXFMTCSTINQ                          
0043.00      C           *IN12     IFEQ 0                             
0044.00      C                     UPDATCSTMST                          
0045.00      C                     ELSE                                 
0046.00      C                     EXCPTRLS                             
0047.00      C                     END                                  
0048.00      C                     END                                  
0049.00      C                     ENDSR                                
0050.00      C*************************************************         
0051.00      C           DELSUB    BEGSR                                
0052.00      C                     MOVE 1       *IN04                 
0053.00      C           CSTKEY    CHAINCSTMST               52
0054.00      C           *IN52     IFEQ 0                            
0055.00      C                     EXFMTCSTINQ                         
0056.00      C           *IN12     IFEQ 0                            
0057.00      C                     DELETCSTMST                         
0058.00      C                     ELSE                                
0059.00      C                     EXCPTRLS                            
0060.00      C                     END                                 
0061.00      C                     END                                 
0062.00      C                     ENDSR                               
0063.00      C***************************************************      
0064.00      C           INQSUB    BEGSR                               
0065.00      C                     MOVE 1       *IN04                
0066.00      C           CSTKEY    CHAINCSTMST               52        
0067.00      C           *IN52     IFEQ 0                            
0068.00      C                     EXFMTCSTINQ                         
0069.00      C                     EXCPTRLS                            
0070.00      C                     END                                 
0071.00      C                     ENDSR  
  0072.00      C**************************************************   
0073.00      C           SETMOD    BEGSR                           
0074.00      C           *IN05     IFEQ 1                        
0075.00      C                     MOVE ADD     MODE             
0076.00      C                     MOVE MODE      MODE1            
0077.00      C                     ELSE                            
0078.00      C           *IN06     IFEQ 1                        
0079.00      C                     MOVE UPDATE  MODE             
0080.00      C                     MOVE MODE      MODE1            
0081.00      C           *IN07     IFEQ 1                        
0082.00      C                     MOVE DELETE  MODE             
0083.00      C                     MOVE MODE      MODE1            
0084.00      C           *IN08     IFEQ 1                        
0085.00      C                     MOVE DISPLAY MODE             
0086.00      C                     MOVE MODE      MODE1            
0087.00      C                     ELSE                            
0088.00      C                     END                             
0089.00      C                     END                                          
0090.00      C                     END                                          
0091.00      C                     END                                          
0092.00      C                     ENDSR                                        
0093.00      OCSTMST  E                RLS                                      
        ****************** End of data **************************************** [/code:1:63ad37c5f3]

 fairyboy 回复于:2004-04-27 11:16:11
以上的程序的功能
F3 END JOB
F5 ADD
F6 UPDATE 可以正常使用

但是F7 和  F8 功能 无法使用

请看下面程序运行的效果图

 fairyboy 回复于:2004-04-27 11:26:43
这是程序开进去时的画面,此时可以显示DISPLAY MODE 但是 没有DISPLAY 的功能  ,只要你转换到ADD 或UPDATE 显示画面后 ,就无法再转回DISPLAY显示画面。
注意:DELETE画面无法显示。


  [code:1:e9e09167b3]DISPLAY MODE                                                               
  11:36:37 CUSTOMER FILEMAINTENANCE   04/27/04
                                                                               
 
                                                                               
                             <--ENTER CUSTOMER NUMBER                       
   
                                                                               
                                                                               
                                                                               
   F3 END JOB      F5 ADD     F6 UPDATE     F7 DELETE    F8 DISPLAY[/code:1:e9e09167b3]

 fairyboy 回复于:2004-04-27 11:29:40
这个是简单的RPG样本程序,有啥看不懂的地方我可以说给大家听。
希望大虾参与讲解给大家学习知识。

 yoyoage 回复于:2004-04-27 14:06:03
check ur SETMOD  subroutine.
make the use of if /else/end relation clear.

 fairyboy 回复于:2004-04-28 08:15:22
呵呵 不错啊 原来是高手 HOHO

 红像 回复于:2004-04-28 12:47:32
这个小程序我以前玩过。本身就很简单了。

 michael9406 回复于:2004-04-28 12:57:27
0010.00      A                                      CA07(07 DELETE MODE)      
0011.00      A                                      CA08(08 DISPLAY MODE)      

change to:

0010.00      A                                      CF07(07 DELETE MODE)      
0011.00      A                                      CF08(08 DISPLAY MODE)

 fairyboy 回复于:2004-04-28 13:11:43
只要在80和81行 之间插入ELSE
          83和84行 之间插入ELSE
就可以了。

 红像 回复于:2004-04-28 13:51:15
[quote:42c34f036f="michael9406"]0010.00      A                                      CA07(07 DELETE MODE)      
0011.00      A                                      CA08(08 DISPLAY MODE)      

change to:

0010.00      A     ..........[/quote:42c34f036f]

PS:
[code:1:42c34f036f]
Command function 
    A record containing changed fields is returned to the program. 
Command attention 
    A record is returned to the program but the record does not contain the data entered by the user and no field validation is performed. 
[/code:1:42c34f036f]

 fairyboy 回复于:2004-04-28 14:18:57
幕后老大啊  厉害哦
你啥时玩过这个小程序的

 多情包子 回复于:2004-04-28 14:55:21
"只要你转换到ADD 或UPDATE 显示画面后 ,就无法再转回DISPLAY显示画面"
 当然这样的,因为你的*in05 或者*in06没有初始化嘛,转换到ADD 或UPDATE 显示画面后 你的*in05 或者*in06 是*on状态!
按照你的程序流程,就不会display了!你的程序可读性太差!

 红像 回复于:2004-04-28 15:43:21
没有初始化不要紧,第一次执行还是可以的。只是执行一次以后就没有清零,就跳不走了。 只好退出。

 fairyboy 回复于:2004-04-28 16:00:13
只要按ENTER就可以就可以跳出来拉,如果你在UPDATE编辑画面中 ,只要再按一次ENTER就可以跳出UPDATE编辑画面,返回到UPDATE画面(不是 编辑画面)

 红像 回复于:2004-04-28 16:40:47
OH, 原来是这样的。

ENTER的作用就是功能键清零吧。不说我是不知道D~~~ 呵呵,学了一招。

 dadaup 回复于:2004-04-28 20:14:02
这段程序好象是来在某一本400 的书上的吧?

 laserjet1918 回复于:2004-04-28 23:27:41
我总觉着,转入任何一个mode 以后,根本不可能在跳出来,根本没定义相应的CF,你定义的cf 只是在第一个记录中!!另外,在其他
的画面中,display,add,update,要添加相应的cf,要做相应的setmode才行, 
别是蒙人的吧,@^@

 fairyboy 回复于:2004-04-29 08:12:33
只要在80和81行 之间插入ELSE 
83和84行 之间插入ELSE 
后 程序可以正常运行。
这个段小程序的功能就是:增加记录(ADD) 修改记录(UPDATE)
删除记录(DELETE) 显示记录(DISPLAY)
没有模糊查询功能的,程序我这都运行过了,没有死循环的情况。

 fairyboy 回复于:2004-04-29 08:15:51
由于这是个样本程序,所以很多注释点语句我都没打上来,大家看的时候可能累点。
我想每个学习RPG程序的人,一开始大概也就是从这样的简单的样本程序开始起步的。
顺便提一句,上个程序中的出错信息也无法显示哦,!!

 红像 回复于:2004-04-29 09:40:44
[quote:78c4790b41="dadaup"]这段程序好象是来在某一本400 的书上的吧?[/quote:78c4790b41]

台湾的一本400例子集。还是繁体的。市面上买不到的,我记得好像是赠书。

 fairyboy 回复于:2004-04-29 10:30:39
大家有没有小程序 拿出来 大家分析一下  长点知识。

 xiayu176 回复于:2004-04-29 14:25:04
这个程序的DDS部分不能用吧?我把你的程序放在DDS中,但用command 17 (Change using SDA)进去后在 DDS Error 一栏处显示 *ERROR.

这是为什么啊?

 xiayu176 回复于:2004-04-29 14:39:55
呵呵,现在可以用啦

 fairyboy 回复于:2004-04-29 14:44:40
如果想要出现错误信息,只要先程序定义ERRSFL字段,但是错误信息只能出现在左下角哦。

 fairyboy 回复于:2004-05-22 20:17:23
其实 程序在于逻辑性  
我刚学RPG得时候 ,每一句 我都看不懂,后来对每一句 后面加注释,慢慢得,先看简单得程序,然后根据思路再自己编个小程序,一步一步来。

 fairyboy 回复于:2004-05-22 20:19:01
还有一个 在程序中  运用 TAG 和 GOTO 语句 ,有时候能把有些程序段边得容易理解。

 fairyboy 回复于:2004-05-22 20:23:16
5555555555555
快失业了 好惨 哦

 aeiou 回复于:2004-05-22 20:56:30
怎么搞得,一下子冒出来一句 快失业了 ? 偶们正招人呐~

 fairyboy 回复于:2004-05-23 10:00:58
哦  是不是在上海?


最热门文章推荐:
hp笔记本电脑
笔记本无线上网
富士通笔记本
清华同方笔记本
笔记本选购
长城笔记本
borland jbuilder
borland 数据库
 ↓相关文章:
© 2006-2008 All Rights Reserved