• 初学AS400总结1


    已经接触as400有10多天了,觉得很有必要总结一下,日后用得着的时候还可以看看,新手的无奈就在于遇到问题时无从下手,一些自己觉得难以解决的问题,在老手眼中,根本就是些很幼稚的问题,好啦,闲话少说,先总结。

          建议一个RPG工程步骤。

         1.建议一个library,比如zrplib。 然后在库中建立object  ,通常有以下几种object , 数据库定义文件:QDDSSRC , 画面文件:QDSPSRC,RPG程序文件:QRPGSRC,帐票还没学,以后再补上。

           这几个文件分别有自己各自的作用,QDDSSRC主要用于建立数据库,在此文件下,建立物理文件和逻辑文件,定义数据库的字段和长度等,用A表描述。

            QDSPSRC文件下,建立画面文件,用A表描述。

            QRPGSRC文件下,用于写RPG程序,引入以上的数据库文件和画面文件,然后就可以对文件里的变量进行操作啦,不用再定义,可以直接应用,主要有,H表:定义时间,F表:引用文件,E表:定义数组,I表:定义时间的格式,C表:操作,所以重点是C表。

           简单的描述了一下文件结构,该说说细节了,免得日后自己用到的时候又难以记起。

           1)首先用STRPDM命令,进入编程环境,进入后,用EDTLIBL命令,先加入自己的库名称(zrplib)吧,免得等下编译不通过,报个40级错误,吓人。自己在这点上由于没有注意到,所以几次都载了跟头,疑惑,上次还能编译通过的,怎么这次又不能啦,加上就好啦。

           2)进入DEBUG模式,也有一点需要注意,不然一开始就疑惑,为什么我的不能单步调试呀,而其他人又可以,一问才恍然大悟。原来RPG程序中,涉及到有数据WRITE的,输入STRISDB后,进入的画面,有个是否有修改数据项(默认为*NO),把此项设为*YES,就可以了进行单步调试啦。

         3)用IF(只读)引入文件时不会被锁住的,而用O(只写)、UF(后面没A,只更新)、UF(后面有A,写/更新)都会锁住文件。

         4)在给文件定位时读取时,有点也要注意,引入文件时用UF的,如果CHAIN时,会把文件锁住,按下F4,在H/N/P项下,输入N,表示不锁。(还没试过,有空要试试)

        5)如果在编辑一本程序时,要参考其他的程序,既要显示两个窗口。在打开一个画面时,按下SHIFT+F3,然后写上要参考的程序的MEMBER,OBJECT,LIBRARY名即可。

        6)RPG程序中,没有局部变量的说法,全部都是全局变量。此外,在画面文件定义功能键(用CF定义,画面上的值可以返回到程序中,用CA定义,不返回,通常用于退出功能键),然后在RPG程序,判断功能键是否被执行(比如F3),用*IN03 IFEQ ’0'  0既表示被执行了,与*OFF对应,‘1’表示没有被执行,与*ON对应。

         7)编程时,有错误时在所难免的,那如何查看编译的错误呢。在命令行,输入WRKJOB,然后选择4,进入SP文件,然后选择最后一个就刚刚编译出现错误的文件,选择5查看错误信息,在第一个命令行输入B,跳到最后一页,查看总的错误数。然后再第二行输入错误的序列号,按下SHIFT+F4就可以跳到错误的位置。(都是英文的,现在我终于知道英语一直都是多么重要。)

        8)在写入数据库文件,只能用RECORD名,而读数据,既可以用表名,也可以RECORD名。

        9)写入的模式

     001.00       C      CLEAR*****R

     002.00       C     **  一些赋值语句比如MOVE A B

     003.00        C    WRITE*****R

    清空的命令,是把字符清为空,而数字变为0

       10)MEMBER SIZE的改变

           找到对应的OBJECT,按下F10,

           Initial number of records 10000     把默认的值设置一下就可以啦

    接下来,介绍一些常用的命令:

    STRPDM      进入编程环境

    EDTLIBL      加入库文件

    RUNQRY       *N       库名/object名   查看数据库的数据

    CTRLIB      对LIBRARY的操作

    CRTSRCPF(DBCS *YES)   对OBJECT的操作。注意,如果要写入中文的,把DBCS项设为YES

             行命令的使用

    1. 行的插入( I, In, n=数字 )
    2. 行的删除( D, Dn, DD )
    3. 行的复制( 复制内容的指定: C, Cn, CC 复制位置的指定: A, An, B, Bn )
    4. 行的移动( 移动内容的指定: M, Mn, MM 移动位置的指定: A, An, B, Bn )
    5. 行的重复复制( 复制内容的指定: CR, CRn, CCR 复制位置的指定: A, An, B, Bn )
    6. 行的复制( 向空白部分复制, ( 复制内容的指定: C, Cn, CC 复制位置的指定: O, On )
    7. 一行内容的移动(L, Ln, LL, LLn, R, Rn, RR, RRn )
    8. 文件内字符串的查找( F14, F ‘字符串’  <F>)
    9. 文件内字符串的替换( F14, C ‘字符串1’,’ 字符串2’  ALL)
    10. 其他MEMBER的参照( F15 )
    11. 编辑内容的保存( F3)

    小结完毕。

  • 相关阅读:
    理解mipi协议【转】
    Using KernelShark to analyze the real-time scheduler【转】
    内核栈溢出【转】
    检测内核的堆栈溢出【转】
    gcc 编译 + 选项【转】
    service mysqld start 报错:service mysqld start 报错 090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 090Can't open the mysql.plugin table. Please run mysql
    【推荐】MySQL Cluster报错及解决方法(不断更新中)
    MySQL Cluster 配置文件(config.ini)详解
    关于MySQL Cluster集群NoOfReplicas参数问题
    通过PHP current()函数获取未知字符键名数组第一个元素的值
  • 原文地址:https://www.cnblogs.com/zrp201008/p/1876750.html
Copyright © 2020-2023  润新知