一:RPG介绍

RPG程序的特点:

1.

程序的编写对于每一个位置都有明确的定义,所以程序的编写必须在指定的位置开始。通过使用ILE工具可以进行一些方便的输入。

2. RPG程序的设计针对每一部分都有严格的要求,有相应的规格说明,他们包括

a) 配置规格说明(Control Specifications):主要规定了程序的命名,日期格式等信息。

b) 文件描述说明(File Description Specifications):对程序使用到的文件的说明

c) 定义说明(Definition Specifications):主要对程序使用的数据进行说明。

d) 输入说明(Input Specifications):主要对文件输入数据进行说明。

e) 计算说明(Calculation Specifications):主要对数据计算和计算顺序的说明。

f) 输出说明(Output Specifications):主要针对数据的输出记录和字段的说明。

g) 子程序说明:包括有三种,对子程序的各种进行进行了定义说明。

3. 指示器(Indicators)

通常是一个字节,被设置为‘0’或者‘1’,他主要作为程序操作的结果或者进行操作的条件。好像程序的逻辑开关,决定着程序的流程。指示器必须在定义规范中进行定义。RPG VI也有一些系统的指示器,他们一般是两个字符的变量,如LR等。指示器可以在程序的任何地方使用,也可以在程序中修改他的值。

4. 操作代码

相当与汇编语言的命令一样,有RPG程序提供一套完整的操作代码,比如读一条数据使用READ ,RPG程序对操作代码进行了分类,比如字符串操作符,数组操作符等。

5. 定义描述文件

a)

文件服务是程序和IO设备的连接。系统里的每一个文件都有相应的描述文件,对文件的特性和数据的组织形式进行描述。如果在程序中要使用IO操作,必须要指定一个描述文件,对IO的设备进行描述。对于文件的类型,系统支持以下几种:

1. 数据库文件(database files):对数据进行持久存储。

2. 设备文件(Device files):容许访问的扩展设备,包括显示文件,打印文件,磁盘文件等。

3. 一般文件(save files):保存在硬盘上的文件

4. 远程文件(DDM files):保存在远程系统上的文件。

b)

每一个IO设备都对应有一个描述文件,在程序中如果要使用到IO设备,就要指定相应的文件。这主要根据操作代码来决定,有的操作代码是设备依赖的,必须指定特定的设备才可以使用,而有些操作代码是和设备独立的,如WRITE等。

产用的设备类型有:

RPG Device Type  ――――>   iSeries File Type

DISK            ――――>database, save, DDM files

PRINTER        ――――>printer files

WORKSTN      ――――> display, ICF files

SEQ            ――――>tape, diskette, save, printer, database

SPECIAL        ――――>N/A

c) 描述文件的类型:

1、 一般程序描述文件(program-described file):在输入输出描述的文件中会做相应的处理。

2、 扩展描述文件(externally described file):主要是多个应用程序可以共享数据

a)

通过针对描述文件的不同配置,RPG程序实现了程序和数据的分离,这样可以针对不同的保存数据的设备和形式,来对描述文件进行配置,这样就很容易的实现的程序的灵活性。在设备进行升级以后,程序依然可以使用。

二、通过ILE建立RPG程序:

a) ILE(Intergrated Language Environment)的介绍

ILE是AS400中提供的一套增强编程的工具包,他针对不同的编程语言,都有相应的环境支持,ILE RPG,ILE C,ILE COBOL,ILE CL等。

b) ILE的优势

i. ILE 本身提供了许多程序模块,供程序员调用

ii. 提供编译的环境,可以对代码进行调试

iii. 提供优化的调用性能

iv. 可以集成多种语言

v. 对代码进行优化

vi. 而且提供老版本的代码转换到新版本的代码,主要是针对RPG程序和CL程序。

c) 使用ILE建立一个应用程序的例子

vii. 建立一个库,取名PRTLIB

CRTLIB LIB(PRTLIB) TEXT(‘SAMPLE ILE APPLICATION’)

viii. 将PRTLIB设置为当前库

CHGCURLIB CURLIB(PRTLIB)

ix. 建立一个源码文件在PRTLIB中

CRTSRCPF FILE(SOURCE) RCDLEN(112) TEXT(‘SAMPLE ILE Appliaction’)

x. 编辑文件,输入文件内容,分配源文件类型是CLP,描述信息是OPM,

WRKMBRPDM FILE(PRTLIB/SOURCE)

xi. 按F3键,退出后,建立命令,系统将会产生CRTCLPGM命令。

三、SEU工具的使用

SEU(Source entry utility)源码输入工具。如图:

这个界面的输入分为两部分:

上面的SEU:在之后,可以输入SEU编辑的命令,包括查找等命令,都是辅助编辑使用,可以在输入代码的时候,随时输入命令。

代码输入在Beginning of data 和 End of data之间输入代码,如果要插入一行,必须在行首位置输入I,系统会自动增加一行,同时提示出代码行号。

在此界面按F1,有具体的帮助信息。

四:源码示例

00.10 * PRTPGMR - Print program - OPM

00.20 *

00.30 * QADSPOBJ is the outfile from DSPOBJD - Override occurs in CL

00.40 FQADSPOBJIF E DISK

00.50 FQPRINT O F 132 OF PRINTER

00.60 ****************************************************************

00.70 * Parameter list

00.80 C *ENTRY PLIST Parm list

00.90 C PARM LIB 10 Library

01.00 C EXCPTHDG Prt heading

01.10 ****************************************************************

01.20 * Read a record

01.30 * QLIDOBJD is the format name of the QADSPOBJ file

01.40 C READ QLIDOBJD 20 Read

01.50 * Continue reading until EOF

01.60 C *IN20 DOWEQ'0' Not EOF

01.70 ****************************************************************

01.80 * Use a subroutine to convert the date from MMDDYY to YYMMDD

01.90 C MOVE ODUDAT MMDDYY 6 MMDDYY fmt

02.00 C EXSR CVTDAT Convert date

02.10 C MOVE YYMMDD LSTUSD 60 Last used dt

02.20 C EXCPTDETAIL Print detail

02.30 C OF EXCPTHDG Prt heading

02.40 C READ QLIDOBJD 20 Read

02.50 C ENDDO Loop Back

02.60 * End the program

02.70 C SETON LR Set LR

02.80 ****************************************************************

02.90 C CVTDAT BEGSR

03.00 * Convert date from MMDDYY to YYMMDD format

03.10 C MOVE MMDDYY WORK2 2 Move YY

03.20 C MOVELWORK2 YYMMDD 6 Move YY

03.30 C MOVELMMDDYY WORK4 4 Move MMDD

03.40 C MOVE WORK4 YYMMDD Move MMDD

03.50 C ENDSR

03.60 ****************************************************************

03.70 OQPRINT E 206 HDG

03.80 O 25 'Objects '

03.90 O 'in Library - '

04.00 O LIB

04.10 O E 2 HDG

04.20 O 6 'Object'

04.30 O 18 'Obj type'

04.40 O 30 'Attribute'

04.50 O 42 'Last used'

04.60 O E 1 DETAIL

04.70 O ODOBNM 10

04.80 O ODOBTP 19

04.90 O ODOBAT 33

05.00 O LSTUSDY 41

对于源码的解释如下:

由于还没有很清楚,所以暂不翻译

00.40The externally described database file is named

QADSPOBJ.This is the

name of the file provided by the system that is used when an outfile is

created by the DSPOBJD command. The system essentially copies the

format of the model file to the outfile named on DSPOBJD. The RPG

program describes the file in QSYS because it wants to use the format

that exists in the file. An OVRDBF command in the CL program causes

the DSPOBJDP file in QTEMP to be read instead of the file that is compiled

into the program. Because both files use the same format, the compiled

RPG program knows what the layout of the format is.

00.50 The QPRINT file is described as a fixed-format file. Since no OVRPRTF

command was specified prior to the open operation of QPRINT, the

system provides access to the first QPRINT file found on the library list.

This is probably the QPRINT file supplied by IBM in the QGPL library.

This file causes spooled printed output to occur.

00.80 The PLIST and PARM operation codes provide the means to pass in the

variable library name from the CL program. This library name is printed

on the heading line.

01.00 The EXCPT statement prints the heading line as output.

01.40 The program reads a record using the QLIDOBJD format. This is the

name of the format used in the QADSPOBJD outfile.

01.60 If end of file is detected, the program sets the LR indicator on and returns.

01.80 A subroutine is used to convert the date-last-used field (which exists in the

outfile in a MMDDYY format) to a YYMMDD format. There are many solutions

to the problem of reformatting a date field. In this example, the subroutine

method is used because in a later chapter we change from an

RPG subroutine to a subprogram.

01.90 The program moves the ODUDAT field (date last used) to a common field

(MMDDYY) and then calls the subroutine. This type of coding creates a

general-purpose subroutine that can convert any MMDDYY date format.

When the subroutine returns, the YYMMDD field is moved to the field

named LSTUSD, which is a decimal field, so that editing can occur.

02.20 A detail line is printed.

02.30 If printer overflow occurs, an EXCPT operation is used to print the heading

on the next page.

02.40 The program loops back to read another record.

03.10 The subroutine converts the date to the correct format by using MOVE and

MOVEL operations. There are many other ways to alter the date format,

but this method allows the same code to move to a subprogram with ease

in a later chapter.

03.70 The heading output includes the library name that was passed into the

program.

04.60 The detail line prints several fields.

as400 编程语言c,AS400_RPG入门相关推荐

  1. 如何学习编程、一门编程语言怎么算入门、快速掌握一门编程语言

    ninechapter 美帝代码搬运工,资深面试官,微信公众号-九章算法(ninechapter) 当你提出这个问题的时候,总有人会告诉你,你应该学习这个,学习那个,亦或者是刷题根本没用,你应该去做项 ...

  2. as400 编程语言c,AS400开发入门.doc

    AS400开发入门 AS/400开发介绍 1.1AS/400应用开发概述3 1.1.1数据描述规范(DDS data description specification)3 1.1.2DB2 QUER ...

  3. python编程语言零基础入门-程序员大佬,给Python零基础入门书籍教程的一些建议!...

    Python对于初学者来说,比起其他编程语言,Python 更容易上手.加上很多企业都使用Python编程语言,促进了Python程序员的市场需求量增加.将Python作为主要开发语言的开发者中有61 ...

  4. 如何学习一门编程语言,从入门到不放弃!

    在学习前,如果能把以下几个方面的问题弄清楚,就能够比较顺利和高效的学习,拿到你所想要的目标.而不是从入门到放弃. 一.方向和目标 首先要确定为什么要学习计算机编程语言,为考试?为工作?为兴趣? 如果是 ...

  5. python编程语言零基础入门-零基础学习编程,Java、Python你会选择哪个?

    现在很多零基础的小伙伴都想要进入到编程行业之中,无论什么情况选择哪门语言都非常重要,毕竟关系到以后的发展和薪资,很多人都知道Python是当下很火的语言,也知道Java是非常高级的编程语言,问题来了, ...

  6. python编程语言零基础入门,Python编程基础知识点

    python语言基础知识有哪些? python语言基础知识如下:1.Python语言是一种解释型.面向对象的编程语言,是一种开源语言.2.表达式从左到右在同一个基准上书写. 3.对象的含义:对象是某个 ...

  7. ae编程语言as_AE开发 入门教程

    此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: /DeveloperKit/Samples/D ...

  8. python语言是一门编程语言_python是一门怎样的编程语言?老男孩python入门

    大家应该都听说过python语言,也知道它是一门非常适合零基础学习的语言,但是对于没有接触过的人来说可能就疑惑python到底是一门什么样的编程语言? 1.跨平台:跨平台不依赖操作系统和硬件环境,某个 ...

  9. ae编程语言as_AE表达式入门详解

    为了入门方便,我把我目前接触的表达式分为了两种 对,就两种,简单吧 第一种是输入简单参数,但不与其他属性建立联系,使用简单 第二种是涉及多语句,与其他属性建立联系的,得会点编程 ***添加表达式的方法 ...

  10. python硬件编程语言_1 Python入门及计算机硬件知识

    一: Python是一种编程语言 语言: 语言是一种事物与另外一种事物沟通的介质 所以说编程语言是程序员和计算机之间实现沟通的桥梁 什么是编程?: 编程就是程序员用计算机所能理解的表达方式(编程语言) ...

最新文章

  1. WijmoJS 使用Web Workers技术,让前端 PDF 导出效率更高效
  2. [导入]PHP5的异常处理
  3. R语言应用实战-基于R语言的判别分析:fisher判别法,距离判别法以及Bayers判别法(附源代码)
  4. java 匿名 异常_JAVA类(内部类、匿名内部类、异常、自定义异常)
  5. 7-36 社交网络图中结点的“重要性”计算 (30 分)(思路加详解)兄弟们PTA乙级题目冲起来
  6. 2022年全球营销趋势
  7. Ajax异步与JavaScript的一些初浅认识
  8. android开发卡死代码,Android Studio编译卡死(示例代码)
  9. 6491: Daydream
  10. 软件设计师12-数据库(范式)
  11. three DragControls(拖拽整个模型)
  12. 结对项目:电梯调度算法的实现和测试
  13. HTML5基础知识习题 一
  14. 计算机硬盘型号怎么看,硬盘编号怎么看
  15. 图像有损压缩与无损压缩_图像:有损与无损压缩
  16. 关于android的外文论文,毕业论文外文翻译-Android开发
  17. java 读文件时,readline的问题
  18. ORR和BIC伪指令应用
  19. 我的RHCE认证考试经历
  20. User Browsing Model简介

热门文章

  1. 光储充一体化充电站,新能源汽车充电桩节能解决方案
  2. 基于stc15f2k60s2芯片单片机编程(可调时钟)
  3. 让XP远程桌面连接支持网络身份验证
  4. 单片机代码真值怎么取反c语言,手把手教你学单片机的C语言程序设计(八)运算符与表达式(续).pdf...
  5. 计算机桌面界面组成,win10桌面添加分类框,电脑桌面归纳小窗口
  6. 所有惠普BIOS版本介绍惠普HP笔记本驱动
  7. 知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等
  8. 如何把Backtrack 5安装到U盘/Backtrack 4安装方法
  9. java还原混淆代码_飘云阁安全论坛如何还原混淆加密的JAVA代码 - Powered by Discuz!...
  10. 网页三剑客的一些序列号