Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346693
  • 博文数量: 90
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 10:54
个人简介

跌打滚爬中的小菜鸟...

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 系统运维

2012-11-21 19:43:59

PF DDS: CUSTOMER
 FMT A* .....A*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 .
        *************** Beginning of data ******************
0001.00       *                                            
0002.00      A                                      UNIQUE  
0003.00      A          R RCUST                            
0004.00      A            CUSNO          5  0              
0005.00      A            CUSNM         30                  
0006.00      A            CUSAD         30                  
0007.00      A            CUSCT         30                  
0008.00      A            CUSST          2                  
0009.00      A            CUSCP          9                  
0010.00      A            CUSPH         10  0              
0011.00      A          K CUSNO                            
        ****************** End of data *********************
PF内数据如下:
 Line   ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10
         CUSNO   CUSNM                           CUSAD                           CUSCT                      
 000001 10,001   ZHANG SAN                       TEXT                            TEXT                      
 000002 10,002   LI LI                           BBBB                            BBB                        
 000003 10,003   WANG WU                         CCCCCCCCCCC                     CCCC                      
 000004 10,004   DDDDDDDDDDDDDDDDDDDD            DDDDDDDDDDDDD                   DDDDDDDDD                  
 000005 10,005   EEEEE                           EEEEEE                          EEEEEEEEE                  
 000006 10,006   FFFFF                           FFFFFF                          FFFFFFFFF                  
 000007 10,007   GGGGG                           GGGGGG                          GGGGGGGGG                  
 ****** ********  End of report  ********                                                                  
ILE COBOL Source: CBL10
 FMT CB ......-A+++B+++++++++++++++++++++++++++++++++++++++++++
        *************** Beginning of data *********************
0001.00        IDENTIFICATION DIVISION.                        
0002.00        PROGRAM-ID.   CBL10.                            
0003.00        ENVIRONMENT    DIVISION.                        
0004.00        CONFIGURATION SECTION.                          
0005.00        SOURCE-COMPUTER. IBM-ISERIES.                  
0006.00        OBJECT-COMPUTER. IBM-ISERIES.                  
0007.00        INPUT-OUTPUT  SECTION.                          
0008.00        FILE-CONTROL.                                  
0009.00            SELECT OUTPUT01 ASSIGN TO DATABASE-CUSTOMER   //2. 使用SELECT和ASSIGN给internal File关联一个external File,这样程序才能操作外边文件
0010.00                ORGANIZATION IS SEQUENTIAL                //   数序读取, INDEXED稍为有点麻烦,我也还没搞明白,MLGB,找不到好例子...
0011.00                ACCESS IS SEQUENTIAL                      //   顺序读取
0012.00                FILE STATUS IS OUTPUT01-FILE-STATUS.      //   指定文件状态码,由于接收文件操作的返回状态,很有用
0013.00        DATA           DIVISION.                        
0014.00        FILE SECTION.                                  
0015.00        FD  OUTPUT01.                                    //1. 程序用到的数据File,需要用FD这这里说明,并给其起一个内部名字(Internal File Name)
0016.00        01  OUTPUR01-REC.                                //   01层,定义File的Record name.        Internal File name仅限于程序内部使用
0017.00            COPY DDS-ALL-FORMATS OF CUSTOMER.            //   这个就是大名鼎鼎的Format 2 COPY statement.  这是个编译器指令,用于描述external File Format
0018.00        WORKING-STORAGE SECTION.                        
0019.00        77  OUTPUT01-FILE-STATUS  PIC X(2).            
0020.00        PROCEDURE      DIVISION.                  
0021.00        MAINLINE.                                  
0022.00            OPEN I-O OUTPUT01.                    
0023.00            READ    OUTPUT01.                      
0024.00            DISPLAY OUTPUT01-FILE-STATUS.          
0025.00            DISPLAY CUSNO.                        
0026.00            DISPLAY CUSNM.                        
0027.00            DISPLAY CUSAD.                        
0028.00            DISPLAY CUSPH.                        
0029.00            CLOSE OUTPUT01.                        
0030.00            STOP RUN.                              
        ****************** End of data *******************
程序没啥说的...就读取PF中一行信息,然后Display一些字段.    第一次找的一个例子是PF+DSPF+COMMIT CONTROL的,太复杂了,看晕了,后来费老大劲儿才弄明白这个例子...


编译后的Spooled File
 *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3
  5761WDS V6R1M0  080215 LN  IBM ILE COBOL                 QIANTEST/CBL10           ISERIESD   11/21/12 05:13:59        Page      3
                                      S o u r c e                                                                                  
   STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S COPYNAME   CHG DATE                
      1     000100 IDENTIFICATION DIVISION.                                                                12/11/20                
      2     000200 PROGRAM-ID.   CBL10.                                                                    12/11/20                
      3     000300 ENVIRONMENT    DIVISION.                                                                12/11/20                
      4     000400 CONFIGURATION SECTION.                                                                  12/11/20                
      5     000500 SOURCE-COMPUTER. IBM-ISERIES.                                                           12/11/20                
      6     000600 OBJECT-COMPUTER. IBM-ISERIES.                                                           12/11/20                
      7     000700 INPUT-OUTPUT  SECTION.                                                                  12/11/20                
      8     000800 FILE-CONTROL.                                                                           12/11/20                
      9     000900     SELECT OUTPUT01 ASSIGN TO DATABASE-CUSTOMER                                         12/11/20                
     11     001000         ORGANIZATION IS SEQUENTIAL                                                      12/11/21                
     12     001100         ACCESS IS SEQUENTIAL                                                            12/11/21                
     13     001200         FILE STATUS IS OUTPUT01-FILE-STATUS.                                            12/11/20                
     14     001300 DATA           DIVISION.                                                                12/11/20                
     15     001400 FILE SECTION.                                                                           12/11/20                
     16     001500 FD  OUTPUT01.                                                                           12/11/20                
     17     001600 01  OUTPUR01-REC.                                                                       12/11/21                
            001700     COPY DDS-ALL-FORMATS OF CUSTOMER.                                                   12/11/20                
     18    +000001       05  CUSTOMER-RECORD PIC X(110).                                        <-ALL-FMTS                          
           +000002*    I-O FORMAT:RCUST      FROM FILE CUSTOMER   OF LIBRARY QIANTEST           <-ALL-FMTS                          
           +000003*                                                                             <-ALL-FMTS                          
     19    +000004       05  RCUST         REDEFINES CUSTOMER-RECORD.                           <-ALL-FMTS                          
     20    +000005           06 CUSNO                 PIC S9(5)         COMP-3.                 <-ALL-FMTS                          
     21    +000006           06 CUSNM                 PIC X(30).                                <-ALL-FMTS                          
     22    +000007           06 CUSAD                 PIC X(30).                                <-ALL-FMTS                          
     23    +000008           06 CUSCT                 PIC X(30).                                <-ALL-FMTS                          
     24    +000009           06 CUSST                 PIC X(2).                                 <-ALL-FMTS                          
     25    +000010           06 CUSCP                 PIC X(9).                                 <-ALL-FMTS                          
     26    +000011           06 CUSPH                 PIC S9(10)        COMP-3.                 <-ALL-FMTS                          
     27     001800 WORKING-STORAGE SECTION.                                                                12/11/20                
     28     001900 77  OUTPUT01-FILE-STATUS  PIC X(2).                                                     12/11/20                
     29     002000 PROCEDURE      DIVISION.                                                                12/11/20                
            002100 MAINLINE.                                                                               12/11/20                
     30     002200     OPEN I-O OUTPUT01.                                                                  12/11/21                
     31     002300     READ    OUTPUT01.                                                                   12/11/21                
     32     002400     DISPLAY OUTPUT01-FILE-STATUS.                                                       12/11/21                
     33     002500     DISPLAY CUSTOMER-RECORD.                                                            12/11/21                
     34     002600     CLOSE OUTPUT01.                                                                     12/11/21                
     35     002700     STOP RUN.                                                                           12/11/20                
                            * * * * *   E N D   O F   S O U R C E   * * * * *                                                      
  5761WDS V6R1M0  080215 LN  IBM ILE COBOL                 QIANTEST/CBL10           ISERIESD   11/21/12 05:13:59        Page      4
                                     M e s s a g e s                                                                                
    STMT                                                                                                                            
 *    31  MSGID: LNC0407  SEVERITY: 20  SEQNBR:  002300                                                                            
          Message . . . . :   AT END phrase missing from sequential READ.                                                          
            Accepted.                                                                                                              
                                          Message Summary                                                                          
 Message totals:                                                                                                                    
    Information (00-04) . . . . . . . . :      0                                                                                    
    Warning     (05-19) . . . . . . . . :      0                                                                                    
    Error       (20-29) . . . . . . . . :      1                                                                                    
    Severe      (30-39) . . . . . . . . :      0                                                                                    
    Terminal    (40-99) . . . . . . . . :      0                                                                                    
    --------------------------------------------                                                                                    
    Total                                      1                                                                                    
                         * * * * *   E N D   O F   M E S S A G E S   * * * * *                              
 Statistics:                                                                                                
    Source records read . . . . . . . . :     27                                                            
    Copy records read . . . . . . . . . :     11                                                            
    Copy members processed  . . . . . . :      1                                                            
    Sequence errors . . . . . . . . . . :      0                                                            
    Highest severity message issued . . :     20                                                            
   LNC0901  0  Program CBL10 created in library QIANTEST on 11/21/12 at 05:13:59.                            
                       * * * * *   E N D   O F   C O M P I L A T I O N   * * * * *                          
解说:
学会看编译信息很有用,没人指导,所有东西不懂的都只能自己理解下,然后写出了,看看运行结果,分析分析编译信息,确实能对程序有更深的了解.
桔色部分序号前有'+',表示这些信息是编译器自动加上的.  这个类似于RPG中F行定义的File自动被编译器解析到I表或O表.
蓝色部分提示说程序有错误,或者警告.这里是个警告.


引申知识(一)
AS/400上所有的文件分为4大类:
Database File(分为PF和LF两类)
Device   File(DSPF, PRTF等)
DDM      File
Save     File
The i5/OS system has four categories of files: database files, device files, DDM files, and save files.

引申知识(二)
文件返回状态码 File status
在FILE-CONTROL节采用了FILE STATUS子句,则由其指定的2字节的字符型数据项记录文件操作的状态码,该状态码在执行EXCEPTION/ERROR声明或INVALID KEY/AT END子句前填写。其他状态由FILE STATUS从句中的data-name-8描述,它不能用于QSAM文件(OS/390、VM)以及行顺序文件(Workstation)。

+--------------------------------------------------------------------------+
|Table 32. 状态码码值和含义                                                |
+------------------+-------------------------------------------------------+
|高位数字含义      | 低位数字含义                                          |
+-----+------------+-----+-------------------------------------------------+
| 0   |成功结束    |  0  |无更多信息                                       |
|     |            +-----+-------------------------------------------------+
|     |            |  2  |仅适用于有允许重复值的替换索引的索引文件         |
|     |            |     |                                                 |
|     |            |     |输入输出语句正确执行,但发现了重复值.             |
|     |            |     |-对于READ语句,当前读出的关键字和下一个记录关键字 |
|     |            |     | 相同.                       |
|     |            |     |-对于REWRITE或WRITE语句,当前写入的记录与现有记录 |
|     |            |     | 关键字重复.                       |
|     |            +-------------------------------------------------------+
|     |            |  4  |READ语句成功执行,但是读出的记录长度与文件描述不  |
|     |            |     |一致.                           |
|     |            +-------------------------------------------------------+
|     |            |  5  |OPEN语句成功执行,但是用optional引用的文件不存在, |
|     |            |     |文件模式为I-O或者EXTEND时,成功地建立了文件.      |
|     |            |     |对OS/390和VM VSAM顺序文件不适用.           |
|     |            +-----+-------------------------------------------------+
|     |            |  7  |带NO REWIND,REEL/UNIT或FOR REMOVAL子句的CLOSE语句|
|     |            |     |或带NO REWINDI子句的OPEN语句,引用的文件不在可反转|
|     |            |     |媒介上.                                          |
+-----+------------+-----+-------------------------------------------------+
| 1   |读写文件结束|  0  |顺序读文件遇到文件结束,没有逻辑记录.             |
|     |condition   |     |首次读optional文件,但是文件不存在.               |
|     |            +-----+-------------------------------------------------+
|     |            |  4  |顺序读相对文件,但是相对记录号的标志数字大于相对码|
|     |            |     |数据项的尺寸.                                    |
+-----+------------+-----+-------------------------------------------------+
| 2   |无效码      |  1  |顺序存取索引文件存在次序(sequence)错.            |
|     |            |     |在一次READ成功后,REWRITE执行前,记录的主码被改变|
|     |            |     |了,或者是下一个记录的主码不满足升序限制         |
|     |            |     |                                                 |
|     |            |     |对于OS/2 for Btrieve索引文件,状态21不可用。此时 |
|     |            |     |可以码的任意次序顺序创建记录                     |
|     |            +-----+-------------------------------------------------+
|     |            |  2  |写入记录将引起码值重复(相对文件)               |
|     |            |     |写入或者重写记录将导致主码或附属码重复,但在索引 |
|     |            |     |文件中并没有DUPLICATES子句                       |
|     |            +-----+-------------------------------------------------+
|     |            |  3  |试图随机访问文件中并不存在的记录,或试图对一个设 |
|     |            |     |成optinal而不存在的输入文件进行START或READ       |
|     |            +-----+-------------------------------------------------+
|     |            |  4  |写相对文件活或索引文件超出了外部定义的边界       |
|     |            |     |或者试图对相对文件进行WRITE,但相对记录号中的    |
|     |            |     |significant digits超过了定义的最大长度           |
+-----+------------+-----+-------------------------------------------------+
| 3   |Permanent   |  0  |                                                 |
|     |错误条件    +-----+-------------------------------------------------+
|     |            |  4  |边界冲突                                         |
|     |            |     |写超出了外部定义的顺序文件边界                   |
|     |            +-----+-------------------------------------------------+
|     |            |  5  |带有INPUT、I-O或EXTEND子句的OPEN语句试图访问一个 |
|     |            |     |不存在的文件,而该文件没有设成optinal            |
|     |            +-----+-------------------------------------------------+
|     |            |  7  |文件不支持OPEN语句指定的打开方式:               |
|     |            |     |                                                 |
|     |            |     |1.  指定了EXTEND或OUTPUT子句,但文件不支持写操作 |
|     |            |     |2.  指定了I-O子句,但文件不支持I-O操作           |
|     |            |     |3.  指定了INPUT子句,但文件不允许读              |
|     |            +-----+-------------------------------------------------+
|     |            |  8  |试图OPEN一个已经带锁关闭的文件                   |
|     |            +-----+-------------------------------------------------+
|     |            |  9  |OPEN语句失败——程序指定的文件属性与文件属性不同 |
|     |            |     |这些属性包括:文件组织方式(顺序、相对、索引), |
|     |            |     |主码,次码,字符集,最大纪录长度,记录类型(定长 |
|     |            |     |或变长),块填充度等。                           |
|     |            |     |                                                 |
|     |            |     |对于AIX、OS/2和Windows,状态39不适用于行顺序文件 |
|     |            |     |或B树文件(line sequential files、Btrievefiles.  |
+-----+------------+-----+-------------------------------------------------+
| 4   |逻辑错误    |  1  |试图打开已经打开的文件                           |
|     |condition   |     |                                                 |
|     |            +-----+-------------------------------------------------+
|     |            |  2  |试图关闭一个未打开的文件                         |
|     |            |     |                                                 |
|     |            +-----+-------------------------------------------------+
|     |            |  3  |对于大规模存储器上以顺序存取方式打开的文件来说, |
|     |            |     |在执行REWRITE语句之前的IO语句不是一个成功的READ  |
|     |            |     |语句                                             |
|     |            |     |                                                 |
|     |            |     |对于以顺序存取方式打开的相对、索引文件来说,     |
|     |            |     |在执行REWRITE或DELETE语句之前的IO语句不是一个    |
|     |            |     |成功的READ语句                                   |
|     |            +-----+-------------------------------------------------+
|     |            |  4  |边界冲突——试图重写REWRITE一个记录,但是记录长度|
|     |            |     |不匹配。对于变长记录,可能是记录长度超过最小或最 |
|     |            |     |大允许的长度 。                                  |
|     |            |     |RECORD IS VARYING                                |
|     |            +-----+-------------------------------------------------+
|     |            |  6  |顺序读取一个以INPUT或I-O方式打开的文件,但是没有 |
|     |            |     |下一个有效记录:                                 |
|     |            |     |1.  前一个READ语句失败,但是没有产生结束条件     |
|     |            |     |2.  前一个READ语句产生了AT END条件               |
|     |            +-----+-------------------------------------------------+
|     |            |  7  |试图读取一个不是以INPUT或者I-O方式打开的文件     |
|     |            |     |                                                 |
|     |            +-----+-------------------------------------------------+
|     |            |  8  |试图写一个不是以I-O、OUTPUT或EXTEND方式打开的文件|
|     |            |     |                                                 |
|     |            +-----+-------------------------------------------------+
|     |            |  9  |试图删除或重写(DELETE or REWRITE)一个不是以I-O |
|     |            |     |方式打开的文件                                   |
+-----+------------+-----+-------------------------------------------------+
|9    |实现者定义  |  0  |                                                 |
|     |的条件      +-----+-------------------------------------------------+
|     |            |  1  |对VSAM文件(OS/390和VM): 文件口令错             |
|     |            |     |                                                 |
|     |            |     |在AIX、OS/2和Windows中: 权限不够                 |
|     |            +-----+-------------------------------------------------+
|     |            |  2  |逻辑错误                                         |
|     |            +-----+-------------------------------------------------+
|     |            |  3  |除了QSAM文件外: 资源不可用                       |
|     |            +-----+-------------------------------------------------+
|     |            |  4  |对VSAM文件(OS/390和VM下,带CMPR2编译选项):    |
|     |            |     |以顺序方式存取文件而没有文件位置指示             |
|     |            |     |                                                 |
|     |            |     |在AIX、OS/2和Windows中: 并发打开错误             |
|     |            +-----+-------------------------------------------------+
|     |            |  5  |除了QSAM文件以外: 无效或不完全的文件信息         |
|     |            +-----+-------------------------------------------------+
|     |            |  6  |对VSAM文件(限于OS/390和VM): 没有DD语句         |
|     |            |     |                                                 |
|     |            |     |对QSAM文件(限于OS/390和VM): 没有DD语句,并且   |
|     |            |     |设置了CBLQDA(OFF)                                |
|     |            |     |                                                 |
|     |            |     |在AIX、OS/2和Windows中: 文件名错                 |
|     |            +-----+-------------------------------------------------+
|     |            |  7  |对VSAM文件(限于OS/390和VM): OPEN执行成功,并   |
|     |            |     |验证了文件完整性                                 |
|     |            |     |                                                 |
|     |            |     |在AIX、OS/2和Windows中:  访问远程文件出错        |
|     |            +-----+-------------------------------------------------+
|     |            |  8  |在AIX、OS/2和Windows中: 打开已经封锁的文件失败   |
|     |            |     |                                                 |
|     |            +-----+-------------------------------------------------+
|     |            |  9  |在AIX、OS/2和Windows中: 访问已经封锁的记录失败   |
|     |            |     |                                                 |
+-----+------------+-----+-------------------------------------------------+
阅读(5760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~