免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 伟伟佳子
打印 上一主题 下一主题

如何将以主文件P和次文件S为周期控制的程序改为以全过程文件F人为来控制周期的程序 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-07-19 18:29 |只看该作者

请问如下程序如何改为关于全过程文件F的?

fMPX       IP  AE           K DISK      
fMSX       US  AE           K DISK   
iRF$MP         01                                                           
i                                          MPMFLD          M1               
iRF$MS         02                                                            
i                                          MSMFLD          M1  
c                   z-add     20            N                                               
c                   if        *IN01 = *on                                                   
c                   eval      *IN03 = *off                                
c     MPLVL         cabgt     '1'           END                                            
c                   if        MPLVL = 'D'                                                   
c                   eval      *IN03 = *on                                               
c                   endif                                                                  
c                   eval      *IN10 = *on                                                   
c                   goto      END                                                           
c                   endif                                                                  
if        *in02 = *on and *in03 = *on
c                   eval      MSLVL = 'O'                                                   
c                   goto      SKIP                                                         
c                   endif
c                   if        *in02 = *on and *in10 = *off
c                   goto      END                                                           
c                   endif
if        MSMFLD = *BLANKS
c                   eval      MSLVL = 'O'
c                   goto      SKIP
c                   endif
c                   eval      WACCT = MSGLAC                                                
c  SKIP          tag                                                                     
c                   eval      MSSEQN = MPSEQN                                               
c                   if        MSSEQN < 1                                                   
c                   z-add     1             MSSEQN                                          
c                   endif                                                                  
c                   update    RF$MS                                                         
c     END           tag                                                                     


注:MSX(US) 文件中所有记录的键字字段都为空。

论坛徽章:
0
12 [报告]
发表于 2007-07-19 22:29 |只看该作者
一直很困惑,I表是具体做什么的?为什么要用它?我看一些老程序里面有用,但较新的程序都没见到过。忘哪位高手能回答一下。谢谢。

论坛徽章:
0
13 [报告]
发表于 2007-07-19 23:37 |只看该作者
我想,应该是SSA 的BPCS代码。

试着写着,最后一次看这样的代码是7年以前。我认为这是个通过M1外部指示器触发的程序。

FMPX      IF    E            K Disk   M1
FMSX      UF   E            K Disk   

/Free
    Read MPX;
    Dow not %eof
       N = 20;
       If MPMFLD <> *Spaces;
          If MPLVL > '1';
             Exsr Exit;
          Endif;
          Exsr Exit;
       Endif;
      
       Chain MPMFLD MSX;
       If %found and MPLVL ='D';
          Evao MSLVL = 'O';
          Exsr Skip;
          Exsr Exit;
       Endif;
      
       If %found and MPMFLD <> *Spaces;
          Exsr Exit;
       Endif;
      
       If MSMFLD = *BLANKS;
          MSLVL  = 'O';
          Exsr Skip;
       Endif;
       WACCT = MPSEQN;
       Read MPX;
    Enddo;
    Exsr Exit;
   
    BegSr Skip;
       MSSEQN = MPSEQN;
       If MSSEQN <1;
          MSSEQN = 1;
       Endif;
       Update MSX;
    EndSr;

    BegSr Exit;
    EndSr;

/End-Free

[ 本帖最后由 passthru 于 2007-7-19 23:53 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2007-07-20 16:04 |只看该作者

请教 FREE格式

请教:

如果改为全过程文件F,可以在C表中加入:

/FREE
         Read CUSTL01;
         dow not %eof;
            Chain   CUS#   CUSTL02;
            If %found ;
                Fld31 = CUS#;
                Fld32 = CUSNAM;
                Fld33 = CUSAD1;
                Fld34 = Balance;
                Write CUSTL03;
              Endif;
            Read CUSTL01;
         Enddo;
/End-Free
。。。。。。
*错误处理例程
/COPY 。。。

这样的 FREE 格式 如何加入 “C”表中,所有列的 前面的 C 标记不要么?
试了试,编译不过。 见笑了,请指教。

论坛徽章:
0
15 [报告]
发表于 2007-07-20 16:06 |只看该作者
原帖由 mynet400 于 2007-7-20 16:04 发表
请教:

如果改为全过程文件F,可以在C表中加入:

/FREE
         Read CUSTL01;
         dow not %eof;
            Chain   CUS#   CUSTL02;
            If %found ;
                Fld31 = C ...


报什么错误信息?

论坛徽章:
0
16 [报告]
发表于 2007-07-20 16:30 |只看该作者
原帖由 1067049 于 2007-7-20 16:20 发表


嵌入格式如下:

0228.00 C      
0229.00 C      
0230.00   /FREE  
0231.00     SETL
0232.00     DOU
0233.00       .
0234.00       .
0235.00       .  
0236.00       .  
0237.00    ...


如果是格式错误,在SEU中就会反白,还到不了编译步骤。呵呵

论坛徽章:
0
17 [报告]
发表于 2007-07-20 16:31 |只看该作者
passthru兄,能否用8楼的例子讲解一下“用I表写过程序接口”呢,我的英文水平有限,红皮书上的例子讲得太少。谢谢。

论坛徽章:
0
18 [报告]
发表于 2007-07-20 16:33 |只看该作者
请教是用 RPG400  还是 RPGLE , 我用的是RPGLE

**********************************************************************
FCUSTL01   IF   E           K DISK                                    
FQPRINT    O    F  132        PRINTER                                 
**********************************************************************
/FREE                                                                 
                    READ      CUSTL01                                 
                    DOW NOT %EOF                                       
                    EVAL      CUSAD1=CUS#+CUSNAM                       
                    EXCPT                                             
                    READ      CUSTL01                                 
                    ENDDO                                             
/END-FREE                                                            
C                   SETON                                        LR   
**********************************************************************
OQPRINT    E                        1                                 
O                       CUS#                10         
O                       CUSNAM              50         
O                       CUSAD1              90         

请看看上面的代码有问题么?
谢谢!

论坛徽章:
0
19 [报告]
发表于 2007-07-20 16:35 |只看该作者
自由格式不用写分号吗?

论坛徽章:
0
20 [报告]
发表于 2007-07-20 16:36 |只看该作者
最大的错误:

*RNF7023 40      1 The Compiler cannot determine how the program can end.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP