免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4552 | 回复: 28
打印 上一主题 下一主题

大家帮忙来找茬(到底RPG程序错在哪?) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-27 11:13 |只看该作者 |倒序浏览
  1. 下图是维护程序主档文件的DDS。
  2.           *************** Beginning of data *************************************
  3. 0001.00      A* CUSTOMER MASTER FILE--CUSTSTR                                   
  4. 0002.00      A          R CSTMST                                                
  5. 0003.00      A            CUST#          5S 0             TEXT(’CUSTOMER NUMBER‘)                     
  6. 0004.00      A            CSTNAM        20                TEXT(’CUSTOMER NAME’)           
  7. 0005.00      A            CSTAD1        20                TEXT(’CUSTOMER ADDRESS‘)                     
  8. 0006.00      A            CSTAD2        20                TEXT(’CUSTOMER ADDRESS’)                     
  9. 0007.00      A            CSTCTY        20                TEXT(’CUSTOMER CITY‘)                     
  10. 0008.00      A            CSTSTE         2                TEXT(’CUSTOMER STATE’)                     
  11. 0009.00      A            CSTZIP         5S 0             TEXT(’CUSTOMER ZIP CODE‘)                     
  12. 0010.00      A          K CUST#                                                
  13.         ****************** End of data ****************************************   

  14. 下图是客户主档文件查询的显示设备文件的DDS。
  15. SEU==>;                                                                  CSTENT
  16. FMT DP .....AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++
  17.         *************** Beginning of data *************************************
  18. 0001.00      A                                      REF(CUSTMSTR)               
  19. 0002.00      A                                      CHGINPDFT(CS)               
  20. 0003.00      A                                      PRINT(QSYSPRT)              
  21. 0004.00      A                                      INDARA                     
  22. 0005.00      A          R HDRSCN                                                
  23. 0006.00      A                                      TEXT('PROMPT FOR CUST NUMBE
  24. 0007.00      A                                      CA03(03 'END OF INQUIRY')   
  25. 0008.00      A                                      CA05(05 'ADD MODE')         
  26. 0009.00      A                                      CA06(06 'UPDATE MODE')      
  27. 0010.00      A                                      CA07(07 'DELETE MODE')      
  28. 0011.00      A                                      CA08(08 'DISPLAY MODE')     
  29. 0012.00      A            MODE           8A  O  1 40DSPATR(HI)                  
  30. 0013.00      A                                  1 13'MODE'                     
  31. 0014.00      A                                      DSPATR(HI)                  
  32. 0015.00      A                                  2  4TIME                        
  33. 0016.00      A                                      DSPATR(HI)                  
  34. 0017.00      A                                  2 28'CUSTOMER FILE MAIN'        
  35. 0018.00      A                                      DSPATR(RI)                  
  36. 0019.00      A                                  2 70DATE                        
  37. 0020.00      A                                      EDTCDE(Y) DSPATR(HI)        
  38. 0021.00      A            CUST#     R     Y  I 10 25DSPATR(CS)                  
  39. 0022.00      A                                      CHECK(RZ)                  
  40. 0023.00      A  51                                  ERRMSG('CUSTOMER ON FILE' 5
  41. 0024.00      A  52                                  ERRMSG('NOT ONFILE' 52)     
  42. 0025.00      A                                 10 33'<--ENTER CUSTOMER NUMBER'  
  43. 0026.00      A                                      DSPATR(HI)                  
  44. 0027.00      A                                 23  4'F3 END JOB'               
  45. 0028.00      A                                 23 21'F5 ADD'                    
  46. 0029.00      A                                 23 34'F6 UPDATE'                 
  47. 0030.00      A                                 23 50'F7 DELETE'                 
  48. 0031.00      A                                 23 66'F8 DISPLAY'               
  49. 0032.00      A          R CSTINQ                    TEXT('DISPLAY CUST INFO')   
  50. 0033.00      A                                      CA12(12 'PREVIOUS SCREEN')  
  51. 0034.00      A*                                                               
  52. 0035.00      A            MODE           8   O  1  4DSPATR(HI)  
  53. 0036.00      A                                  1 13'MODE'                     
  54. 0037.00      A                                      DSPATR(HI)                 
  55. 0038.00      A                                  2  4TIME                       
  56. 0039.00      A                                      DSPATR(HI)                 
  57. 0040.00      A                                  2 28'CUSTOMER FILE MAINTENANCE'
  58. 0041.00      A                                      DSPATR(HI RI)              
  59. 0042.00      A                                  2 70DATE EDTCDE(Y) DSPATR(HI)  
  60. 0043.00      A                                  4 14'CUSTOMER'                 
  61. 0044.00      A                                      DSPATR(HI UL)              
  62. 0045.00      A            CUST#     R        O  4 25DSPATR(HI)                 
  63. 0046.00      A            CSTNAM    R        B  6 25DSPATR(CS)                 
  64. 0047.00      A  04                                  DSPATR(PR)                 
  65. 0048.00      A            CSTAD1    R        B  7 25DSPATR(CS)                 
  66. 0049.00      A  04                                  DSPATR(PR)                 
  67. 0050.00      A            CSTAD2    R        B  8 25DSPATR(CS)                 
  68. 0051.00      A  04                                  DSPATR(PR)                 
  69. 0052.00      A            CSTCTY    R        B  9 25DSPATR(CS)                 
  70. 0053.00      A  04                                  DSPATR(PR)                                                                              
  71. 0054.00      A            CSTSTE    R        B 10 25DSPATR(CS)                 
  72. 0055.00      A  04                                  DSPATR(PR)                 
  73. 0056.00      A            CSTZIP    R        B 10 40DSPATR(CS)                 
  74. 0056.01                                             EDTCDE(Z)                  
  75. 0057.00      A  04                                  DSPATR(PR)                 
  76. 0057.01      A                                 23  2'F12 CANCEL'               
  77. 0057.02      A            MODE1          8   O 23 20                           
  78. 0058.00      A          R CSTBLD                    TEXT('ADD CUST RECORD')   
  79. 0059.00      A                                      CA12(12 'PREVIOUS SCREEN')
  80. 0060.00      A            MODE           8   O  1 40DSPATR(HI)                 
  81. 0061.00      A                                  1 13'MODE' DSPATR(HI)         
  82. 0062.00      A                                  2  4TIME DSPATR(HI)            
  83. 0063.00      A                                  2 28'CUSTOMER FILE MAINTENANCE'
  84. 0064.00      A                                      DSPATR(HI)                 
  85. 0065.00      A                                  2 70DATE EDTCDE(Y) DSPATR(HI)  
  86. 0066.00      A                                  4 14'CUSTOMER:' DSPATR(HI UL)  
  87. 0067.00      A            CUST#     R        O  4 25DSPATR(HI)                 
  88. 0068.00      A                                  6 20'NAME' DSPATR(HI)
  89. 0069.00      A            CSTNAM    R        I  6 25                           
  90. 0070.00      A                                  7 17'ADDRESS' DSPATR(HI)        
  91. 0071.00      A            CSTAD1    R        I  7 25                           
  92. 0072.00      A                                  8 17'ADDRESS' DSPATR(HI)        
  93. 0073.00      A            CSTAD2    R        I  8 25                           
  94. 0074.00      A                                  9 20'CITY' DSPATR(HI)           
  95. 0075.00      A            CSTCTY    R        I  9 25                           
  96. 0076.00      A                                 10 19'STATE' DSPATR(HI)         
  97. 0077.00      A            CSTSTE    R        I 10 25                           
  98. 0078.00      A                                 10 36'ZIP' DSPATR(HI)            
  99. 0079.00      A            CSTZIP    R        I 10 40                           
  100. 0080.00      A                                 23  2'CANCEL ADDITION'           
  101.         ****************** End of data ****************************************
  102.                                                                                                                                                                
  103. 这个显示文件的DDS包含3种记录格式:HDRSCN 和CSTINQ 和 CSTBLD。HDRSCN记录格式提示客户和处理方式,CSTINQ记录被用于更新,删除和显示方式。

  104. 下面这个程序维护客户主档文件,具有增加,修改和删除功能,也可以用这个程序进行查询,
  105.   该程序首先设置处理的缺省(显示)方式,且显示客户维护提示屏,工作站可以按功能键3,请求终止作业,否则,用户输入客户号且按ENTER,用户可以通过功能键 5增加   6更新   7删除  8显示。
  106. 为了增加新记录到文件中,程序使用客户号做搜索变元检索主档文件,如果该记录在文件中不存在,程序显示CSTBLD屏幕,允许用户输入一新客户记录。如果该记录已在文件中,则显示错误信息,用户可以按功能键12(它把指示符12为ON)取消增加操作且释放该记录。否则,用户输入新客户信息到输入域且写到主档文件中。
  107.   为更新、删除、或显示一条现存记录,程序用客户号作为搜索变元检索主档文件。如果该客户记录存在于文件中,程序显示客户文件查询屏幕CSTINQ,如果记录不在文件,则显示一个错误信息,如果处理方式是显示或是删除,则输入域是写保护的,否则,用户可输入新信息到输入域中,更新客户记录,用户可按功能键12,它设置指示符12为ON,来取消更新或删除操作,且释放该记录。
  108.                                                                                 
  109.         *************** Beginning of data ***********************************
  110. 0001.00      FCUSTMSTRUF  E           K        DISK                  A        
  111. 0002.00      FCSTENT  CF  E                    WORKSTN                       
  112. 0003.00      C           CSTKEY    KLIST                                    
  113. 0004.00      C                     KFLD           CUST#                     
  114. 0005.00      C                     MOVE 'DISPLAY' MODE                       
  115. 0006.00      C                     EXFMTHDRSCN                              
  116. 0007.00      C           *IN03     DOWEQ'0'                                 
  117. 0008.00      C                     EXSR SETMOD                              
  118. 0009.00      C           CUST#     IFNE *ZERO                                
  119. 0010.00      C           MODE      CASEQ'ADD'     ADDSUB                     
  120. 0011.00      C           MODE      CASEQ'UPDATE'  UPDSUB                     
  121. 0012.00      C           MODE      CASEQ'DELETE'  DELSUB                     
  122. 0013.00      C           MODE      CASEQ'DISPLAY' INQSUB                     
  123. 0014.00      C                     END                                       
  124. 0015.00      C                     END                                       
  125. 0016.00      C                     EXFMTHDRSCN                              
  126. 0017.00      C                     END     
  127. 0018.00      C                     MOVE '1'       *INLR                    
  128. 0019.00      C           ADDSUB    BEGSR                                   
  129. 0020.00      C           CSTKEY    CHAINCSTMST               50            
  130. 0021.00      C           *IN50     IFEQ '0'                                
  131. 0022.00      C                     MOVE '1'       *IN51                    
  132. 0023.00      C                     ELSE                                    
  133. 0024.00      C                     MOVE '0'       *IN51                    
  134. 0025.00      C                     MOVE *BLANK    CSTNAM                  
  135. 0026.00      C                     MOVE *BLANK    CSTAD1                  
  136. 0027.00      C                     MOVE *BLANK    CSTAD2                  
  137. 0028.00      C                     MOVE *BLANK    CSTCTY                  
  138. 0029.00      C                     MOVE *BLANK    CSTSTE                  
  139. 0030.00      C                     MOVE *BLANK    CSTZIP                  
  140. 0031.00      C                     EXFMTCSTBLD                             
  141. 0032.00      C           *IN12     IFEQ '0'                                
  142. 0033.00      C                     WRITECSTMST                             
  143. 0034.00      C                     END                                    
  144. 0035.00      C                     END                                          
  145. 0036.00      C                     ENDSR                                       
  146. 0037.00      C**************************************************                                                                                
  147. 0038.00      C           UPDSUB    BEGSR                                
  148. 0039.00      C                     MOVE '0'       *IN04                 
  149. 0040.00      C           CSTKEY    CHAINCSTMST               52         
  150. 0041.00      C           *IN52     IFEQ '0'                             
  151. 0042.00      C                     EXFMTCSTINQ                          
  152. 0043.00      C           *IN12     IFEQ '0'                             
  153. 0044.00      C                     UPDATCSTMST                          
  154. 0045.00      C                     ELSE                                 
  155. 0046.00      C                     EXCPTRLS                             
  156. 0047.00      C                     END                                 
  157. 0048.00      C                     END                                 
  158. 0049.00      C                     ENDSR                                
  159. 0050.00      C*************************************************         
  160. 0051.00      C           DELSUB    BEGSR                                
  161. 0052.00      C                     MOVE '1'       *IN04                 
  162. 0053.00      C           CSTKEY    CHAINCSTMST               52
  163. 0054.00      C           *IN52     IFEQ '0'                           
  164. 0055.00      C                     EXFMTCSTINQ                        
  165. 0056.00      C           *IN12     IFEQ '0'                           
  166. 0057.00      C                     DELETCSTMST                        
  167. 0058.00      C                     ELSE                                
  168. 0059.00      C                     EXCPTRLS                           
  169. 0060.00      C                     END                                 
  170. 0061.00      C                     END                                 
  171. 0062.00      C                     ENDSR                              
  172. 0063.00      C***************************************************      
  173. 0064.00      C           INQSUB    BEGSR                              
  174. 0065.00      C                     MOVE '1'       *IN04               
  175. 0066.00      C           CSTKEY    CHAINCSTMST               52        
  176. 0067.00      C           *IN52     IFEQ '0'                           
  177. 0068.00      C                     EXFMTCSTINQ                        
  178. 0069.00      C                     EXCPTRLS                           
  179. 0070.00      C                     END                                 
  180. 0071.00      C                     ENDSR  
  181.   0072.00      C**************************************************   
  182. 0073.00      C           SETMOD    BEGSR                           
  183. 0074.00      C           *IN05     IFEQ '1'                        
  184. 0075.00      C                     MOVE 'ADD     'MODE            
  185. 0076.00      C                     MOVE MODE      MODE1            
  186. 0077.00      C                     ELSE                           
  187. 0078.00      C           *IN06     IFEQ '1'                        
  188. 0079.00      C                     MOVE 'UPDATE  'MODE            
  189. 0080.00      C                     MOVE MODE      MODE1            
  190. 0081.00      C           *IN07     IFEQ '1'                        
  191. 0082.00      C                     MOVE 'DELETE  'MODE            
  192. 0083.00      C                     MOVE MODE      MODE1            
  193. 0084.00      C           *IN08     IFEQ '1'                        
  194. 0085.00      C                     MOVE 'DISPLAY' MODE            
  195. 0086.00      C                     MOVE MODE      MODE1            
  196. 0087.00      C                     ELSE                           
  197. 0088.00      C                     END                             
  198. 0089.00      C                     END                                          
  199. 0090.00      C                     END                                          
  200. 0091.00      C                     END                                          
  201. 0092.00      C                     ENDSR                                       
  202. 0093.00      OCSTMST  E                RLS                                      
  203.         ****************** End of data ****************************************
复制代码

论坛徽章:
0
2 [报告]
发表于 2004-04-27 11:16 |只看该作者

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

以上的程序的功能
F3 END JOB
F5 ADD
F6 UPDATE 可以正常使用

但是F7 和  F8 功能 无法使用

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

论坛徽章:
0
3 [报告]
发表于 2004-04-27 11:26 |只看该作者

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

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


  1. DISPLAY MODE                                                               
  2.   11:36:37 CUSTOMER FILEMAINTENANCE   04/27/04
  3.                                                                               

  4.                                                                               
  5.                              <--ENTER CUSTOMER NUMBER                       
  6.    
  7.                                                                               
  8.                                                                               
  9.                                                                               
  10.    F3 END JOB      F5 ADD     F6 UPDATE     F7 DELETE    F8 DISPLAY
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-04-27 11:29 |只看该作者

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

这个是简单的RPG样本程序,有啥看不懂的地方我可以说给大家听。
希望大虾参与讲解给大家学习知识。

论坛徽章:
0
5 [报告]
发表于 2004-04-27 14:06 |只看该作者

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

check ur 'SETMOD'  subroutine.
make the use of 'if /else/end' relation clear.

论坛徽章:
0
6 [报告]
发表于 2004-04-28 08:15 |只看该作者

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

呵呵 不错啊 原来是高手 HOHO

论坛徽章:
0
7 [报告]
发表于 2004-04-28 12:47 |只看该作者

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

这个小程序我以前玩过。本身就很简单了。

论坛徽章:
0
8 [报告]
发表于 2004-04-28 12:57 |只看该作者

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

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')

论坛徽章:
0
9 [报告]
发表于 2004-04-28 13:11 |只看该作者

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

只要在80和81行 之间插入ELSE
          83和84行 之间插入ELSE
就可以了。

论坛徽章:
0
10 [报告]
发表于 2004-04-28 13:51 |只看该作者

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

原帖由 "michael9406" 发表:
0010.00      A                                      CA07(07 'DELETE MODE')      
0011.00      A                                      CA08(08 'DISPLAY MODE')      

change to:

0010.00      A     ..........


PS:

  1. Command function
  2.     A record containing changed fields is returned to the program.
  3. Command attention
  4.     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.
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP