免费注册 查看新帖 |

Chinaunix

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

请教!COBOL中SUBFILE的使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-12 13:39 |只看该作者 |倒序浏览
代码目的:练习COBOL中SUBFILE的使用
          在SUBFILE中显示通过代码生成的数据
代码资源:1-DSPFSF01(CBLLE)
               2-DSPTSF(DSPF)
问题:当执行到WRITE DSPTSF-REC FORMAT IS "C1"这一句的时候程序无故跳出(不是通过STOP RUN)。且无任何提示信息。

现在将代码贴出来。小弟刚开始学习COBOL。请高手指教。
1-DSPFSF01(CBLLE)

      *----------------------------------------------------------------
      * PROGRAM-ID     : DSPFSF01
      * DSPF-ID        : DSPTSF
      * GREAT DATE     : 2006/01/11
      * UPDATE DATE    : @@@@/@@/@@
      *----------------------------------------------------------------
       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      DSPFSF01.
       ENVIRONMENT      DIVISION.
       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.
           SELECT DSPTSF ASSIGN TO WORKSTATION-DSPTSF
           ORGANIZATION IS TRANSACTION
           ACCESS  MODE IS SEQUENTIAL.
      *
       DATA            DIVISION.
       FILE            SECTION.
       FD DSPTSF.
       01 DSPTSF-REC.
          COPY DDS-ALL-FORMATS OF DSPTSF.
       WORKING-STORAGE SECTION.
       01 INDIC-AREA.
          05 IN20 PIC 1.
             88 SUBF-DSP VALUE B"1".
          05 IN21 PIC 1.
             88 SUBF-DSP-CTL VALUE B"1".
          05 IN22 PIC 1.
             88 SUBF-CLR VALUE B"1".
          05 IN12 PIC 1.
             88 LAST-PAGE VALUE B"1".
          05 IN28 PIC 1.
             88 ROLL-UP VALUE B"1".
          05 IN29 PIC 1.
             88 ROLL-DOWN VALUE B"1".
          05 IN98 PIC 1.
             88 IO-ERROR VALUE B"1".
          05 IN03 PIC 1.
             88 NOT-END-OF-JOB VALUE B"0".
             88 END-OF-JOB VALUE B"1".
      *
       77 CYS-NUM PIC 9(4) VALUE 1.
      *
       PROCEDURE       DIVISION.
       DECLARATIVES.
       DISPLAY-ERR-SECTION SECTION.
           USE AFTER STANDARD EXCEPTION PROCEDURE ON DSPTSF.
       DISPLAY-ERR-PARAGRAPH.
           SET IO-ERROR TO TRUE
           MOVE CORR INDIC-AREA TO ERRFMT-O-INDIC
           WRITE DSPTSF-REC FORMAT IS "ERRFMT"
           END-WRITE
           CLOSE DSPTSF.
           STOP RUN.
       END DECLARATIVES.
      *
       MAIN-PROGRAM SECTION.
       MAINLINE.
           OPEN I-O DSPTSF.
           SET NOT-END-OF-JOB TO TRUE.
           MOVE ZEROS TO INDIC-AREA.
           SET SUBF-DSP TO TRUE.
           SET SUBF-DSP-CTL TO TRUE.
           MOVE CORR INDIC-AREA TO C1-O-INDIC.
           WRITE DSPTSF-REC FORMAT IS "C1"
           END-WRITE.
           READ DSPTSF RECORD
           END-READ.
           PERFORM UNTIL END-OF-JOB
             MOVE CORR INDIC-AREA TO C1-O-INDIC
             PERFORM 9 TIMES
               MOVE CYS-NUM TO SSTUNO
               MOVE "12345678901234" TO SSTUNA
               WRITE DSPTSF-REC FORMAT IS "S1"
               END-WRITE
               COMPUTE CYS-NUM = CYS-NUM + 1
             END-PERFORM
             MOVE ZEROS TO INDIC-AREA
             READ DSPTSF FORMAT IS "G1"
             END-READ
             READ DSPTSF FORMAT IS "C1"
             END-READ
             READ DSPTSF FORMAT IS "S1"
             END-READ
             MOVE CORR C1-I-INDIC TO INDIC-AREA
           END-PERFORM.
           CLOSE DSPTSF.
           STOP RUN.


2-DSPTSF(DSPF)

//    *----------------------------------------------------------------
/     * DSPF-ID  : DSPFTSF
//    * UPDATE   : @@@@/@@/@@
//    *№/内容: (      )
//    *----------------------------------------------------------------
     A* 明細画面
     A*----------------------------------------------------------------
//   A          R S1                        SFL
/    A            SSTUNO         4   O 10 22TEXT('学員NO.')
/    A            SSTUNA        14   O 10 60TEXT('学員名前')
     A*----------------------------------------------------------------
     A* 明細画面制御
    A*----------------------------------------------------------------
     A          R C1                     SFLCTL(S1)
     A                                      CF03(03 '終了')
     A                                      CF12(12 '前画面')
     A                                      ROLLUP(2
     A                                      ROLLDOWN(29)
     A                                      OVERLAY
     A                                      PROTECT
     A                                      SFLSIZ(0036)
     A                                      SFLPAG(0009)
     A  20                                  SFLDSP
     A  21                                  SFLDSPCTL
     A  22                                  SFLCLR
     A                                      CSRLOC(H1LIN      H1POS)
     A                                      SFLCSRRRN(&H1CSRRN)
     A                                      RTNCSRLOC(&H1REC &H1FLD)
     A            H1RRN          4S 0H      SFLRCDNBR
     A            H1LIN          3S 0H      TEXT('カーソル制御(行)')
     A            H1POS          3S 0H      TEXT('カーソル制御(桁)')
     A            H1CSRRN        5S 0H      TEXT('カーソル制御(RRN)')
     A            H1REC         10A  H      TEXT('カーソル制御(RECORD)')
     A            H1FLD         10A  H      TEXT('カーソル制御(FIELD)')
     A                                 24 53 'F3 = TERMINATE'
     A*----------------------------------------------------------------
     A* 画面IO
     A*----------------------------------------------------------------
     A          R ERRFMT
     A  98                              6  5 'INPUT-OUTPUT ERROR'


论坛徽章:
0
2 [报告]
发表于 2006-03-02 09:36 |只看该作者
subfile 要用 READ INTO  和 WRITE FROM 語句, 並且要先定義數組.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP