RPG学习笔记四(编译程序时的出错信息查看)

一、进入编译后的脱机文件中

在编译程序时如果出错,在命令行执行“WRKSPLF” ,然后用 SHIFT+F6 去到最末尾,
可以看到名称为“程序名”的脱机文件(SPOOL  FILE) ,用 5进入,查看出错信息。

 

二、了解当前编译的错误信息的类型、数量

假设程序 FHS02R 编译时出错, 进入到编译后的脱机文件中, 先在 “Control”
处,填“B” ,确认,到最末尾,可看到类似于这样的信息:
                            F i n a l   S u m m a r y

Message Totals:                                                            
    Information  (00) . . . . . . . :         1                               
    Warning      (10) . . . . . . . :       0                               
    Error        (20) . . . . . . . :        0                               
    Severe Error (30+)  . . . . . . :        2                               
    ---------------------------------  -------                               
    Total . . . . . . . . . . . . . :            3   

这就表示当前程序编译之后,有 2个 30 级的错误,1 个 00级的错误,总共有 3 个错误。

00 级的错误仅是信息级别(Information),可以不理会;
10 级的错误是警告,也可以不理会;
20、30 级别的错误就是正式的错误,也就是不解决它们,程序就无法编译通过

总之,级别越大,就表示错误的问题越严重,所以排错的顺序,是先大后小。即先排除
40 级错误,再来查 30 级错误,然后才是 20 级。所以说,排错顺序是先大后小。

 

三、查找出错信息对应的代码行

脱机文件的最后一页,是错误的汇总信息,向上翻页,查看具体错误信息,仍是上例: 
                          M e s s a g e   S u m m a r y                     
 Msg id  Sv Number Message text                                             
*RNF7086 00      1 RPG handles blocking for the file. INFDS is updated only  
                   blocks of data are transferred.                          
*RNF7030 30      1 The name or indicator is not defined.                    
*RNF7515 30      1 The move operation has operands that are not compatible.  
       * * * * *   E N D   O F   M E S S A G E   S U M M A R Y   * * * * *  
 5722WDS V5R1M0  010525 RN    IBM ILE RPG             FHSLIB/FHS02R

注意看,这里有两个 30级错误,RNF7030,RNF7515。
以 7030 为例,在“Find”处,输入 7030,然后 SHIFT+F4 查找(也就是在脱机文件中
查找 7030) ,多找几下,就可以看到具体的错误信息:
  Msg id  Sv Number Seq     Message text                                
 *RNF7030 30     12 000009  The name or indicator FHS20 is not defined.
可以很清楚地看到,就是说代码第 12 行,字段“FHS20”没有定义。
这里,Number项的值,就表示代码行数。当然,这个代码并不是我们源代码中的行数,
而是指编译之后的执行代码中的行数。可以从脱机文件中的程序代码处从头开始看起,如: 
12 C                   MOVE      ‘ABCD’        FHS20
这个最左边的 12,就表示这是代码执行的第 12行。
当我们查看到是错误行的语句之后, 就可以回到源代码中, 按图索骥地找到错误的代码,然后修正它。

 

四、常见编译出错信息:

RNF2120  声明的文件不存在
RNF7030  变量未定义, 通常随着如果变量未定义, 那么与该变量有关的每一句话, 都会报错,
并且除了 7030 之外,还会有诸如类型不匹配这些的错误,所以排错时,一般都是先修改 7030 的错误。
RNF5177  使用了 DO、FOR、DOW、IF、SELECT 语句时,漏写了相应的 END语句

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值