• AS400-RPG-01


    RPG程序简介

    RPG 的全称:Report Program Generator

    • 能 COPY、修改、编译源代码(RPGLE、CLP),并能运行编译后的程序
    • 能 COPY、修改、编译文件(PF、LF、PRTF、DSPF)
    • 对数据文件(PF)有简单的认识(FIELD -> RECORD -> PF),并知道 LF 与 PF 的
      对应关系

    编写 HELLO WROLD

    
     FMT C  CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
            *************** Beginning of data *************************************
    0001.00 C     'HELLO WROLD' DSPLY                                              
    0002.00 C                   RETURN                                             
    0003.00 C                                                                      
    0004.00 C                                                                      
            ****************** End of data ****************************************
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    调用程序 call + 程序名 屏幕反白出现 “HELLO WORLD”字样

    在这里插入图片描述

    四大部分

    其实我们可以将RPGLE 的程序按照部位划分可以分为四个部分

    H-Spec

    定义的表的格式以及定义具体的时间 做一些解释型的工作

    • DATFMT (*IS0)表示这是国际化的意思
    • TIMFT (*ISO) 表示国际化格式含义
    • DATEDIT(YMD) 年月日
    • 其中H行还可以定义 HDEBUG(*YES) 关键宇控制模块中生成调试工具

       

    F-Spec

    内容说明

        首先在首行填写上F 然后按 F4 那么就会出现以下内容

    在这里插入图片描述


    • Filename:

      • 需要声明的文件名,必须顶格,文件名必须唯一,也就是程序中对同样的文件名不能声
        明两次。
    • File Type:

      • 声明文件的处理类型
      • I: 输入型,即只读文件,对声明的文件只取其记录的值,不对记录进行修改
      • U: 修改型,即对声明的文件进行修改操作(删除记录属于修改操作的一种)
      • O: 输出型,即只写,对声明的文件只进行写操作。
      • C:混合型,用于对屏幕文件的定义。(混合型,即输入/输出型,以屏幕文件为例,也就是读取屏幕文件的一些输入字段信息,同时也可以输出一些字段的值到屏幕文件中,但不能对屏幕文件自身进行修改,所以与上面的 U 是有区别的)
    • File Designation:

      • P:表明声明的文件是主文件
      • S:表明声明的文件是次文件
      • T:数组
      • F:常用文件
      • R:Record address file
    • End of File:

      • 程序结束前,对记录的处理方式
    • File Addtion:

      • 是否会增加文件中的记录,即是否会对文件进行写操作。
      • 可以不填,或填“A”
        • 当 File Type 为“O”时,系统自动默认此项为“A”,不必填写;
        • 当 File Type 为“I”,或“U”时,这项内容可以填“A”,也可以不填。不填,即表示不会增加文件中的记录,也就是没有写操作;填“A”时,即表示会增加文件中的记录,也就是会对文件进行写操作。
    • File Format:

    • +文件格式,不能为空,允许的值有:

        • E: 声明的文件,是外部描述的文件
        • F: 声明的文件
    • 这里通常填“E”,即为外部描述文件

    • Record Address Type:

      • A: 字符型
      • D:日期型
      • P :数字型(压缩)
      • S :非压缩型数字
      • T : 时间类型
      • Z :时间戳
      • B :二进制
      • F :浮点型
      • G :图形字符
    • Device:

      • 声明文件存放的位置 必须填写
        • DISK 磁盘文件 即文件储存在磁盘上
        • PRINTER 打印文件 提供打印输出描述
    • Keyword:

      • COMMIT:允许事务控制下处理文件
      • IGNORE:允许忽略外部描述文件的记录格式
      • LNCLUDE:文件中包含的所有其他记录被忽略
      • INFDS: 关键字允许定义和命名数据结构 已包含文件关联的反馈信息

    D-Spec

    首行填写D 然后在按F4 那么就会出现如下情况:

    在这里插入图片描述

    Name

    定义变量的名字 该名字可以不顶格写

    E

    标识定义的变量是否源自外部数据结构。可以不填,或填“E”

    Declaration Type

    定义变量的类型,允许的值如下:

    • DS: 数据结构,即定义一个结构变量
    • C: 常量,常量只能使用字符,不需要定义常量的长度、类型。常量的内容写“Keywords”处,并使用 CONST 关键字,在程序段中,不能对常量进行赋值操作。
    • S: 定义以下内容:独立变量、数组、表

    From

    • 当“Declaration Type”项为“S”时,表示独立变量、数组,此项不填
    • 当“Declaration Type”项为“DS”时,表示结构,此项仍然不填
    • 当“Declaration Type”项为空时,表示当前定义的变量,属于上面定义的结构,此时,此项可以填写,也可以不填写。
    • 当填写时,“From”项表示变量在结构中的起始位置,右对齐;“To/length”表示变量在
      结构中的结束位置,也是右对齐。

    Length  

    定义变量的长度

    Internal Data Type

    定义变量类型,允许的值有:

    • A:字符型
    • B:二进制
    • D:日期型
    • F:浮点型
    • G:图型
    • I:带符号的整数
    • N:指示器变量
    • P:压缩型数字
    • S:普通的数字类型
    • T:时间型
    • U:无符号的整数
    • Z:变量定义为日期+时间型
    • * :指针型

    Keywords

    关键字:可以不填写常用的关键字有如下

    • CONST: 定义常量的值
    • DIM: 定义数组
    • EXTNAME:引用外部文件作为数据结构变量
    • EXTFLD: 对引用了外部文件作为数据结构的某个变量,进行重命名
    • LIKE: 定义变量时,参照已存在的变量定义
    • OCCURS: 定义结构体变量时,指定的结构体变量的记录条数
    • INZ: 定义变量时,赋值初始值

    Comment

    注释项

    C-Spec

    在这里插入图片描述

    N01

    指示器相关的参数

    Factor 1

    操作内容一

    Operation

    操作码

    Factor 2

    操作内容二

    Result

    操作结果

    Length

    长度

    Decimal Positions

    小数位

    本文到此就先告一段落啦(各位加油🤖)

  • 相关阅读:
    ElasticSearch更新数据后查不到的问题
    [最小生成树]Planar graph 2022杭电多校第6场 1010
    ceph 005 赋权补充 rbd块映射
    C/C++中的STL
    新华三的千亿企业梦,还得靠吃ICT老本来实现?
    YOLO系列梳理(九)初尝新鲜出炉的YOLOv6
    Android13系统启动异常,卡在动画界面
    Redis分布式缓存
    jeecg中j-vxe-table和j-popup组件的修改使用
    【FPGA教程案例58】深度学习案例5——基于FPGA的CNN卷积神经网络之图像缓存verilog实现
  • 原文地址:https://blog.csdn.net/weixin_46128463/article/details/134278277