RPG语言基本语法.docx
- 文档编号:8102032
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:122
- 大小:177.26KB
RPG语言基本语法.docx
《RPG语言基本语法.docx》由会员分享,可在线阅读,更多相关《RPG语言基本语法.docx(122页珍藏版)》请在冰豆网上搜索。
RPG语言基本语法
RPG语言基本语法
RPG基础教程
第一章物理文件和逻辑文件
第一节概述
物理文件用于存放数据,相当与数据库中的表的概念。
物理文件一般由MEMBER编译产生后,但它的存在不会依赖MEMBER的存在。
源物理文件是特殊的物理文件,用于存放各类源代码的定义,在本章中若无特殊说明物理文件均指存放数据(RECORD)的物理文件(PF-DTA)。
物理文件的数据,受已经建立的逻辑文件影响,如非重复关键字或非重复关键字组合(即这些关键字能够唯一确定一条记录)。
例如,要写重复记录到某物理文件,而存在对应的逻辑文件,而这个逻辑文件存在非重复关键字(UNIQUE),尽管我们操作的是物理文件而不是逻辑文件,仍然会写入失败。
物理文件的删除,必须在删除建立在该物理文件上的逻辑文件删除之后。
在需要重新编译物理文件时就需要注意了,因为重新编译物理文件也是在修改文件,如果存在对应的逻辑文件,那么编译会失败,因此需要先把逻辑文件删除,再编译物理文件。
在RPG程序中因为效率的原因,一般不使用物理文件进行操作。
使用SEU进行编辑产生的MEMBER不是物理文件,而是物理文件的定义。
逻辑文件是物理文件的视图,逻辑文件依赖于物理文件,逻辑文件提供了对物理文件进行排序,过滤,筛选的方法,逻辑文件同时能够对物理文件的数据进行约束。
物理文件仅能有一个R+记录名,而逻辑文件允许有多个(但本业务系统不使用),逻辑文件过多将导致数据再写入和恢复数据时,重新建立索引的时间增加,逻辑文件也需要占用磁盘空间,根据索引(K+域名)的内容不同占用的磁盘空间也不同。
在RPG程序中较常使用逻辑文件。
另外,在编译逻辑文件时请注意,物理文件所在的库是否是在库列表中,否那么编译程序找不到物理文件,而报错。
如果需要删除物理文件,请注意先删除逻辑文件,否那么将不能删除物理文件。
第二节物理文件的建立
一.二.1建立存放物理文件的库文件
CRTLIB+Library的名字直接按默认的配置生成
或CRTLIB+F4,出现以下画面,并按图填入:
CreateLibrary(CRTLIB)
Typechoices,pressEnter.
Library............>SSSName
Librarytype..........*PROD*PROD,*TEST
Text'description'.......这是一个用来测试的Library
一.二.2建立存放源程序的源物理文件
CRTSRCPF+F4,出现以下画面,并按图填入:
CreateSourcePhysicalFile(CRTSRCPF)
Typechoices,pressEnter.
File..............wjdsrcName
Library...........sssName,*CURLIB
Recordlength.........92Number
Member,ifdesired.......*NONEName,*NONE,*FILE
UserspecifiedDBCSdata....*yes*NO,*YES
Text'description'.......这是测试用的源文件
【注意】:
UserspecifiedDBCSdata该项必须选择*yes,否那么在建立的SRCPF中将不能使用汉字
一.二.3进入源物理文件(SRCPF)
执行STRPDM,再执行“3”
或使用WRKOBJPDM+F4
或使用WRKLIBPDM+F4
或使用WRKMBRPDM+F4
SpecifyMemberstoWorkWith
Typechoices,pressEnter.
File..........wjdsrcName,F4forlist
Library........sss*LIBL,*CURLIB,name
Member:
Name.........*ALL*ALL,name,*generic*
Type.........*ALL*ALL,type,*generic*,*BLANK
一.二.4建立定义物理文件的(类型为PF)MEMBER
使用F6键产生新的Member
StartSourceEntryUtility(STRSEU)
Typechoices,pressEnter.
Sourcefile..........>WJDSRCName,*PRV
Library...........>SSSName,*LIBL,*CURLIB,*PRV
Sourcemember.........wjdtstpfName,*PRV,*SELECT
Sourcetype..........pfName,*SAME,BAS,BASP...
Text'description'.......这是测试用的PF
AS400的编辑器SEU的内容,常用的操作
使用编辑器进行物理文件的结构定义
以上命令执行后,进入以下画面
Columns...:
171EditSSS/WJDSRC←名称
SEU==>行命令输入区WJDTSTPF
FMTPF.....A..........T.Name++++++RLen++TDpB......Functions+++++++++++++++++提示行
***************Beginningofdata************************************
'''''''
'''''''
'''''''
'''''''
行号序号
区域'''内容输入区
'''''''
'''''''
'''''''
'''''''
******************Endofdata***************************************
行命令区域常用的命令
T移到头部B移到尾部
F+字符串(不必用引号)查找字符串
C+要替换的字串+替换成的字串(+A)替换字符串(或全部替换)
行号序号区域常用的命令
I插入一行In插入n行
D删除一行Dn删除n行
DD将两个DD之间的行删除.
C将本行进行拷贝,此命令必须与A或B配合使用
CC将两个CC之间的行进行拷贝,此命令必须与A或B配合使用
M将本行进行移动,此命令必须与A或B配合使用
MM将两个MM之间的行进行移动,此命令必须与A或B配合使用
A–after将拷贝或移动的行放到本行后面
B—before将拷贝或移动的行放到本行前面
在本区域输入行号可以快速将编辑窗口移到所输的行(以该行作第一行)
一个物理文件的DDS
Columns...:
171EditSSS/WJDSRC
SEU==>WJDTSTPF
FMTPF.....A..........T.Name++++++RLen++TDpB......Functions+++++++++++++++++
***************Beginningofdata************************************
0001.00ARWJDPF
0001.01A*上行是说明记录的名称PF
0002.00APENUMB3P0
0002.01A*上行是将个人序号说明为3位长度的整数(小数长度为0)
0003.00ACOLHDG('个人序号')
0004.00APENAME10O
0004.01A*上行将个人中文名说明为10个汉字长
0005.00ACOLHDG('个人中文名')
0006.00APEENNM12A
0006.01A*上行将个人英文名说明为12个字母长度
0007.00ACOLHDG('个人英文名')
0008.00APESARY7P2
0008.01A*上行将每日消费说明为7位长,其中小数位为2位长的数值
0009.00ACOLHDG('每日消费')
******************Endofdata***************************************
F3=ExitF4=PromptF5=RefreshF9=RetrieveF10=CursorF11=Toggle
COLHDG用来在进行数据的显示DSPDBF(见P19)和UPDDTA(见P18)时作为域的说明,便于理解域的内容,若不使用COLHDG那么这些内容为定义域时的域名,如
个人序号将代表PENUMB显示
【注意】:
在输入COLHDG的)时window的输入法可能不是处于中文状态!
!
!
因此输入的)可能为中文的)造成错误(亮条)
F3退出此时屏幕出现
MEMBER存盘
Exit
Typechoices,pressEnter.
Change/createmember.......YY=Yes,N=No
Member.............WJDTSTPFName,F4forlist
File..............WJDSRCName,F4forlist
Library............SSSName
Text..............这是测试用的PF
Resequencemember........YY=Yes,N=No
Start.............0001.000000.01-9999.99
Increment...........01.0000.01-99.99
Printmember...........NY=Yes,N=No
Returntoediting.........NY=Yes,N=No
Gotomemberlist.........NY=Yes,N=No
此时若想取消本次修改的内容那么Change/createmember选项改为N
存盘后产生Memberwjdtstpf
WorkwithMembersUsingPDMS105067
File......WJDSRC
Library....SSSPositionto.....
Typeoptions,pressEnter.
2=Edit3=Copy4=Delete5=Display6=Print7=Rename
8=Displaydescription9=Save13=Changetext14=Compile15=Createmodule.
OptMemberTypeText
WJDTSTPFPF这是测试用的PF
一.二.5将定义物理文件的MEMBER编译产生物理文件
1.PF的编译方法
为了把数据文件和源文件分开先建立存放PF的Library
使用命令CRTLIBSSSDTA
方法一使用CRTPF+F4
方法二直接在Member前的OPT中选择14+F4进行编译
WorkwithMembersUsingPDMS105067
File......WJDSRC
Library....SSSPositionto.....
Typeoptions,pressEnter.
2=Edit3=Copy4=Delete5=Display6=Print7=Rename
8=Displaydescription9=Save13=Changetext14=Compile15=Createmodule.
OptMemberTypeText
14WJDTSTPFPF这是测试用的PF
按下F4后出现CRTPF的画面
CreatePhysicalFile(CRTPF)
Typechoices,pressEnter.
File..............>WJDTSTPFName
Library...........>SSSDTAName,*CURLIB
Sourcefile..........>WJDSRCName
Library...........>SSSName,*LIBL,*CURLIB
Sourcemember.........>WJDTSTPFName,*FILE
Recordlength,ifnoDDS....Number
Generationseveritylevel...200-30
Flaggingseveritylevel....00-30
Filetype...........*DATA*DATA,*SRC
Member,ifdesired.......*FILEName,*FILE,*NONE
UserspecifiedDBCSdata....*NO*NO,*YES
Text'description'.......*SRCMBRTXT
【说明】编译后,源物理文件中对应的MEMBER依然存在,可用前面的方法看到。
此时使用WRKOBJSSSDTA/WJDTSTPF可以看到物理文件
注意,若仅使用WRKOBJWJDTSTPF那么可能不能看到物理文件,为何?
因为在很多的操作中系统使用的默认Library选项为*LIBL,这个*LIBL就是库列表,使用dsplibl可以看到自己当前的库列表。
关于库列表
库列表用于说明在进行一些操作或命令(如WRKOBJ,文件编译等)时系统进行查找的库名称及查找的先后顺序,例如逻辑文件编译时使用的PFILE(物理文件名),系统将在*LIBL中查找该物理文件,若找到一个那么使用该物理文件,而忽略后续的其他同名的物理文件
由于在今后的逻辑文件的编译和下一步的数据添加和查找更方便
将SSSDTA这个library加入到库(library)列表中
使用命令ADDLIBLE
AddLibraryListEntry(ADDLIBLE)
Typechoices,pressEnter.
Library............SSSDTAName
Librarylistposition:
Listposition........*FIRST*FIRST,*LAST,*AFTER...
Referencelibrary......Name
此时再使用DSPLIBL看前后的不同
一.二.6给物理文件添加,修改,删除记录
执行UPDDTAWJDTSTPF后在屏幕的最底行出现
DFUiscreatingtemporaryprogramQDZTD00001foryoutorun.
2.数据的输入屏幕
WORKWITHDATAINAFILEMode....:
ENTRY
Format....:
PFFile....:
WJDTSTPF
个人序号:
个人中文名:
个人英文名:
每日消费:
加入记录
WORKWITHDATAINAFILEMode....:
ENTRY
Format....:
PFFile....:
WJDTSTPF
个人序号:
001
个人中文名:
X三
个人英文名:
JohnZhang
每日消费:
12345
【注意】1、在UPDDTA中数值型有小数点的数据,在录入时不能加上小数点,系统会根据定义时的小数点位置自动进行处理.如以上的12345实际表示为123.45。
2、汉字仅能在数据类型定义为O的字段中输入。
常用的功能键:
F23两次将该记录删除
F9插入记录
PageUp向上翻查记录
PageDown向下翻查记录
当已经到达最后一条记录时PageDown将翻到第一条
当到达第一条记录时PageUp将翻到最后一条记录
录入其他数据后F3退出
EndDataEntry
Numberofrecordsprocessed
Added.....:
3
Changed....:
0这三个是增加和更改及删除的记录条数
Deleted....:
0
Typechoice,pressEnter.
Enddataentry.......YY=Yes,N=No
F3=ExitF12=Cancel
Allrecordsadded,changed,ordeletedwillbeprinted.
显示物理文件中的内容(注意每日消费的数字表示)
执行命令:
DSPDBFWJDTSTPF后:
DisplayReport
Reportwidth.....:
51
Positiontoline.....Shifttocolumn......
Line....+....1....+....2....+....3....+....4....+....5.
个人序号个人中文名个人英文名每日消费
0000011X三JohnZhang123.45
0000022李四HaryLee90.90
0000033王五BillWang78.12
**************Endofreport********
按执行键退出
一.二.7产生物理文件的方式
进入SEU键入DDS语句,经编译产生实际存放数据的物理文件
通过STRDKTRDR命令读盘产生,目前不用。
通过复制文件(CPYF命令)产生.
注意:
这方法不创建源物理文件.
通过恢复库或目标产生命令RSTLIB,RSTOBJ。
不介绍。
第三节逻辑文件的建立
一.三.1给物理文件WJDTSTPF新增记录
采用上面讲述的方法给物理文件WJDTSTP,填加记录。
添加的记录,dspdbfwjdtstpf显示的内容
DisplayReport
Reportwidth.....:
51
Positiontoline.....Shifttocolumn......
Line....+....1....+....2....+....3....+....4....+....5.
个人序号个人中文名个人英文名每日消费
0000011X三JohnZhang123.45
0000022李四HaryLee90.90
0000033王五BillWang78.12
00000450马三力59.96
000005150黎明MarkLee888.88
0000061X明Mikezhang678.90
000007900钟辉345.67
**************Endofreport********
如上图示,在物理文件中数据是按写入的先后进行排序的。
一.三.2建立逻辑文件
逻辑文件的建立方法与物理文件的建立方法相同,仅仅是类型改为LF
逻辑文件WJDTSTL1的定义
Columns...:
171EditSSS/WJDSRC
SEU==>WJDTSTL1
FMTLF.....A..........T.Name++++++.Len++TDpB......Functions++++++++++++++++++
***************Beginningofdata*************************************
0001.00ARWJDPF
0002.00APFILE(WJDTSTPF)
0003.00AKPENUMB
0004.00AKPESARY
0005.00ASPENUMBCOMP(LT100)
0006.00A*K表示使用后面的字段作为键字
0007.00A*S表示选择,后面的COMP是条件LT100指PENUMB小于100
A*
******************Endofdata****************************************
【注意】:
在逻辑文件中对于物理文件的域不要再定义长度和类型
F3退出后使用14+F4
将产生CRTLF的命令画面
编译产生逻辑文件
使用WRKOBJWJDTSTL1看WJDTSTL1的属性
使用逻辑文件wjdtstl1显示的内容
执行命令:
DSPDBFWJDTSTL1。
DisplayReport
Reportwidth.....:
51
Positiontoline.....Shifttocolumn......
Line....+....1....+....2....+....3....+....4....+....5.
个人序号个人中文名个人英文名每日消费
0000011X三JohnZhang123.45
0000021X明Mikezhang678.90
00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RPG 语言 基本 语法