收藏 分销(赏)

RPGLE程序员速成手册.doc

上传人:a199****6536 文档编号:1727591 上传时间:2024-05-08 格式:DOC 页数:84 大小:396KB
下载 相关 举报
RPGLE程序员速成手册.doc_第1页
第1页 / 共84页
RPGLE程序员速成手册.doc_第2页
第2页 / 共84页
RPGLE程序员速成手册.doc_第3页
第3页 / 共84页
RPGLE程序员速成手册.doc_第4页
第4页 / 共84页
RPGLE程序员速成手册.doc_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、1简单说明32程序代码行的编写32.1最简单的RPGLE程序32.2举例准备32.3简单的程序流程42.4常见的程序流程52.5F行说明52.5.1内容说明52.5.2常用例子92.5.3补充说明92.6D行说明92.6.1内容说明102.6.2常用例子132.6.3补充说明132.7入口参数142.8C行说明162.8.1写在前面162.8.2内容说明162.8.3ILE操作码分类:182.8.4ILE操作码192.8.4.1A-C192.8.4.2D-E272.8.4.3F-N322.8.4.4O-R382.8.4.5S-Z423和程序相关的数据库知识483.1LF(逻辑文件)483.1.

2、1逻辑文件概念483.1.2有关编译的问题483.1.3逻辑文件对效率的影响503.2MEMBER503.3游标513.3.1游标的概念513.3.2不同操作码对应的游标的处理513.3.3“有且仅有”的游标513.3.4LOVAL、HIVAL对应的游标操作523.4事务处理 - COMMIT533.4.1概念描述533.4.2使用方法533.4.3注意事项543.5关于锁表的问题 LCKW544DEBUG调试以及常见出错信息554.1写在前面554.2常规用法564.2.1程序编译564.2.2执行DEBUG命令564.2.3运行程序564.2.4在DEBUG模式中进行调试564.2.5跟踪

3、被当前程序调用的程序574.2.6一定要退出DEBUG模式584.2.7补充584.3跟踪批处理程序( From qingzhou)584.4常见的出错信息594.4.1编译程序时的出错信息594.4.2运行时的出错信息615CL、CMD615.1CL程序615.1.1基本认识615.1.2CL程序的常用语法及命令:625.1.3不常用的语法645.2CMD656屏幕文件及使用667其它667.1报表打印667.2SAVF,备份与恢复717.3菜单-MENU727.4开发时常用的命令737.5一点想法751 简单说明内部交流、或可作培训使用。对用户作如下假定:1、 能COPY、修改、编译源代码

4、(RPGLE、CLP),并能运行编译后的程序2、 能COPY、修改、编译文件(PF、LF、PRTF、DSPF);3、 对数据文件(PF)有简单的认识(FIELD RECORD PF),并知道LF与PF的对应关系。2 程序代码行的编写2.1 最简单的RPGLE程序为便于理解,这里写一个最简单的RPGLE程序CL0N01Factor1+Opcode&ExtFactor2+Result+Len+D+HiLoEq * Beginning of data *0001.00 C HELLO WORLD DSPLY 0002.00 C RETURN * End of data *这个程序编译成功,并调用(C

5、ALL 程序名),就是在屏幕上反白显示“HELLO WORLD”字样。(其中,绿色字样,是系统自动显示的,下同)与自由风格的C语言不同,RPGLE中的编码,是有一定的格式,如果写错,将会在当前代码行上高亮反绿显示。初学者如果不太清楚从何处开始下手,可以使用“F4”键查看(F4键只有用2进入的编辑状态才有效,用5进入的查看状态是无效的)Level N01 Factor 1 Operation Factor 2 Result HELLO WORLD DSPLY Decimal Length Positions HI LO EQ Comment 关于每一项所对应的内容代表什么意思,该如何填写,即如何

6、写程序,将会在下面的具体讲解。2.2 举例准备列出表名,字段,以方便下面的举例。假设有PF文件叫PFFHS,文件的记录格式叫FMTFHS每条记录,都是由FHS01、FHS02、FHS03三个字段组成,每个字段都是两位长的字符型变量。逻辑文件PFFHSL1的键值为FHS01逻辑文件PFFHSL2的键值为FHS02逻辑文件PFFHSL3的键值为FHS01、FHS02注:文件的记录格式,可以理解为给这个文件整条记录起的一个名字;或者是说将每条记录视都视做一个类型相同大变量,然后给这个大变量起的名字。所以文件的记录格式信息中,包含有一条记录由多少个字段组成,总计长度是多少这样的信息。文件的记录格式,与

7、各个字段同时定义。(写文件的源码时)文件的记录格式在RPGLE的程序中,不能与文件名相同。2.3 简单的程序流程为方便起见,系统自动显示的就不再贴出来了,只贴代码段。FPFFHS UF E DISK CREADFMTFHSCEVALFHS01=”01”CUPDATEFMTFHSCSETONLRCRETURN这个程序的意思,是说读PFFHS这个文件,然后将读到的第一条记录中的FHS01这个字段的值修改为“01”。“SETONLR”,LR的位置可在HI、LO、EQ中任选一处。意思是指将打开指示器*INLR,即赋值使指示器*INLR的值等于1。等价于“EVAL*INLR=1”,意思是强制将内存中的数

8、据写到磁盘中。(基于效率因素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。)LR,取自是Last RecordRETURN,表示程序结束,在后面“操作码”一节中,会有讲述。如果不太明白,就记住CSETONLRCRETURN或CEVAL*INLR=1CRETURN这两句话加在一起,表示程序结束就可以了。从这个程序中,我们可以看到,RPGLE的程序,大致上可以分为两个部分:1、 声明、定义部分:声明程序中使用到的文件(F行),定义程序中使用的变量(D行)2、 程序运行部分 :即C行,也就是程序段。在RPGLE程序中,F行必须在D行前面,D行必须在C行前

9、面。程序执行的起始顺序,将从定义部分之后,第一个C行开始,顺序向下执行。程序中的F行、D行都不是必须项,一个程序可以没有F行(如仅完成计算功能的公共函数,比如计算利息),也可以没有D行(没有需要特别定义的变量,或者所有变量都在C行进行定义),但不应该没有C行,因为F行与D行都属于非执行行,是起定义作用;C行是执行行。没有C行的程序,是无执行意义的。2.4 常见的程序流程FPFFHS UF E DISK /声明文件PFFHSD LSFLD01S2/定义临时变量LSFLD01CEVALLSFLD01=01/给变量LSFLD01赋值CEXSRSUB#UPD/执行子过程SUB#UPDCEVALLSFL

10、D02=02/给变量LSFLD02赋值CEXSRSUB#UPD/执行子过程SUBUPDCSETONLR/数据写入磁盘CRETURN/程序结束CSUB#UPDBEGSR/子过程SUB#UPD开始CREADFMTFHS/读PFFHS文件CEVALFLD01=LSFLD01/给字段FLD01赋值CUPDATEFMTFHS/修改文件CENDSR/子过程结束“/”后面的,只是简单的解释,如果自已动手写,不需要输入这些内容。系统在运行这个程序时,是按如下的顺序来执行:1. 首句EVAL赋值语句,直接执行;2. 当系统发现操作码“EXSR”时,根据后面的变量名“SUB#UPD”,去查找对应的“SUB#UPD

11、BEGSR”语句;3. 然后从“SUB#UPDBEGSR”之后,顺序向下执行,直至“ENDSR”语句4. 执行到“ENDSR”之后,将会再回到当初的“EXSRSUB#UPD”处,继续向下执行,直到RETURN语句为止这里提出一点要注意,如果子过程中,又执行了自身,即在SUB#UPD程序中,又出现了“EXSRSUB#UPD”,是可以编译通过的,但在执行过程中,系统会因为无法定位,而出现死循环,直至报错异常中断退出。也就是RPGLE的程序中,子过程不允许出现递归。2.5 F行说明2.5.1 内容说明首位填上F,然后按F4,会出现如下内容: File File End of File Filenam

12、e Type Designation File Addition Sequence File Record Limits Length of Record Format Length Processing Key Field Address Type File Organization Device Keywords Comment 各项的含义分别是:Filename:需要声明的文件名,必须顶格,文件名必须唯一,也就是程序中对同样的文件名不能声明两次。File Type:声明文件的处理类型。必须填写。允许的选项有:I:输入型,即只读文件,对声明的文件只取其记录的值,不对记录进行修改U:修改型,

13、即对声明的文件进行修改操作(删除记录属于修改操作的一种)O:输出型,即只写,对声明的文件只进行写操作。C:混合型,用于对屏幕文件的定义。(混合型,即输入/输出型,以屏幕文件为便,也就是读取屏幕文件的一些输入字段信息,同时也可以输出一些字段的值到屏幕文件中,但不能对屏幕文件自身进行修改,所以与上面的U是有区别的)FileDesignation:文件的指定方式,允许的选项有:不填:表示这是一个输出文件,即“File Type”项为“O”时,此项不填P:表明声明的文件是主文件,这个很少用,cycle相关S:表明声明的文件是次文件,这个没用过,cycle相关R:Record address file,

14、记录地址文件?没用过T:数组或表文件?不懂,没用过F:常用,具体含义不知道该如何翻译(Full procedural file)简单来说,不考虑cycle(循环控制),这样理解就够了:当“File Type”为I,U,C时,这里填“F”当“File Type ”为O时,这里不填写End of File:程序结束前,对记录的处理方式。可以不填,或填“E”。但从英文解释上来看,不敢妄下定论,似乎不填,表示在程序结束前,要处理所有文件的所有记录(含LF?);填E,表示只处理这个文件的所有记录?总之,此项一般是不填。File Addtion:是否会增加文件中的记录,即是否会对文件进行写操作。可以不填,

15、或填“A”当File Type为“O”时,系统自动默认此项为“A”,不必填写;当File Type为“I”,或“U”时,这项内容可以填“A”,也可以不填。不填,即表示不会增加文件中的记录,也就是没有写操作;填“A”时,即表示会增加文件中的记录,也就是会对文件进行写操作。Sequence:针对cycle使用的,表示排序顺序。(Cycle我没有用过,估计可能是使用控制起来,程序代码不那么直观,不利于上手和维护,所以现在已经不流行使用了。)当定义为非cycle文件时,即“File Designation”项非“P”、“S”时,此项必须为空;当定义为cycle文件时,即“File Designatio

16、n”项为“P”、或“S”时,此项可填空、A、D。A表示升序,D表示降序。因为CYCLE现在已不常用,所以通常不填。File Format文件格式,不能为空,允许的值有:E:声明的文件,是外部描述的文件(即文件在程序运行之前就已存在?)F: 声明的文件,是一个程序描述文件?(不知道什么意思,没用过)这里通常填“E”,即为外部描述文件Record Length“File Format”为“F”时,才需要填写。没用过通常不填Limit Processing不懂。通常不填。Length of Key Field查询时,索引键值的长度如果“File Format”项等于“E”,即外部描述文件时,此项不填

17、如果“File Format”项等于“F”,便不需要按KEY值查询时,此项也不填如果“File Format”项等于“F”,需要按KEY值查询时,此项填写KEY值的长度(12000)。因为一般都使用外部描述文件,所以这里一般都不填写。Record Address Type记录寻址类型,好象是对文件键值的描述。允许的值如下:空:不使用KEY值,在程序段中,不会对文件的查询定位操作,如“SETLL”、“CHAIN”操作码都不会用的时,该项填空。K: 使用KEY值,即表示会对声明的文件进行查询定位操作,此时声明的文件必须有键值,即必须为逻辑文件(LF文件),或在生成文件时,已加入了KEY值。(下面的

18、选项应该是程序描述文件才会使用)A:KEY值为字符型D:KEY值为日期型F:KEY值为数字型G:KEY值为非英文字符P:KEY值为压缩型数字T:KEY值为时间型Z:KEY值为timestamp?总之,如果要按照键值对声明的文件进行查询定位操作(即程序中使用了CHAIN、SETLL操作码,则此项需要填写“K”;如不需要进行查询操作,则不填。),此项填“K”时,声明的文件必须含有KEY值。File Organization不知道,一般不填Device声明文件的存放位置,必须填写,允许的值有:DISK:磁盘文件,即文件存储在磁盘上,最常见的;PRINTER:打印文件,提供打印输出描述,以及对打印设备

19、访问。打印报表用这个;WORKSTN:workstation,工作站,显示文件。屏幕文件(DSPF)的定义用这个值(下面这两种我没用过的)SEQ:磁带文件,文件存储在磁带上。SPECIAL:特殊文件,我现在也不是很清楚具体使用方式。据blogliou说,这种类型,是允许指定一种不能被RPG直接操作的输入/输出设备。比如可以通过SPECIAL文件,在RPGLE程序中实现象读写磁盘一样,对DTAQ进行程序间数据交换。Keyword可以不填,常用的值有(这里只列出几个常用的):COMMIT该文件记录的数据操作进行日志处理(关于日志处理,后面会章节会讲到)RENAME对文件记录格式名进行重命名。比如说

20、程序中需要同时声明PFFHSL1,PFFHSL2这两个逻辑文件。这两个逻辑文件的记录格式名都是一样(通常和PF一样,即都为FMTFHS;不过也可以定义成不同。如果不同,当然就不需要使用RENAME键字了)。那么,为了能让系统区分,就必须对其中一个的记录格式名进行重命名。RENAME的语法:RENAME(旧记录格式名:新记录格名),如下:FPFFHSL1IFE DISKFPFFHSL2IFEDISKRENAME(FMTFHS:FMTFHS2新记录格式可以自由定义,只要在该程序中无同名的即可。RENAME并不会真正的更改文件的记录格式名,仅是在当前运行程序中进行重命名。对同时运行的其它程序无影响U

21、SROPN对于声明的文件,由用户自行打开。如果不填写此关键字,系统将会在程序最最开始(执行第一句C行语句前),自动执行“OPEN文件” 的操作,在程序结束后,自动执行“CLOSE文件”的操作。而填写此关键字之后,OPEN,CLOSE的操作将由用户在C行程序段中,自行处理。如果用户未执行OPEN操作,就执行CHAIN、READ、SETLL等语句,在编译程序时就会报错。程序在结束之前,必须关闭所有已打开的文件,所以用起来会比较繁琐。USROPN常作用于对文件的解锁,在同一程序中打开同一文件的不同MEMBER等,属于一个较高级的用法,可在实际操作中慢慢体会。OPEN,CLOSE的操作码,对应的是文件

22、名,不是记录格式名。即COPENPFFHSL1CCLOSEPFFHSL1而不是COPENFMTFHSComment注释说明。源自RPG,在RPG中是有作用的,可以对程序作简短的说明,但在RPGLE中,其实已经没有作用了,此项不用填。(填了也没用)2.5.2 常用例子对文件进行只读的声明:FPFFHS IF E DISK 对文件进行修改的声明:FPFFHS UF E DISK 对文件进行只写的声明:FPFFHS O E DISK 对文件进行修改,以及增加记录的操作:FPFFHSUF A EDISK对文件进行查询,增加记录的操作,并对文件进行查询操作:FPFFHSL1IF AE KDISK声明两个

23、记录格式相同的文件,并对其中之一进行重命名FPFFHSL1IFE K DISKFPFFHSL2IFE K DISKRENAME(FMTFHS:FMTFHS2)注:在声明时,两个文件不一定要上下紧接着;随便改哪一个文件对应的记录格式都可以;新旧记录格式名用冒号隔开,新记录格式名可自行定义,无规则。对文件的修改操作进行日志处理:FPFFHSL2UFE KDISKCOMMITcycle类文件的声明:FPFFHSL2 IP E K DISK这样文件声明为P之后,程序中不需要写循环读文件,也不需要写RETURN,设指示器INLR,也就是FPFFHSL2 IP E K DISKC READ 记录格式名等价

24、于FPFFHSL2 IF E K DISKC DOW 1 = 1C READ 记录格式名 EQ指示器C IF EQ指示器=1C LEAVEC ENDIFC ENDDOC RETURN2.5.3 补充说明声明的文件,可以同时使用多个keyword关键字,并可以不在同一行(但必须紧接在声明的文件的下面),如下:FPFFHSL2IFEDISKRENAME(FMTFHS:FMTFHS2)FCOMMIT即表示文件PFFHSL2,同时使用了RENAME、COMMIT两个关键字。如果写得下,也可以写在同一行,以空格键分开,如下FPFFHSL2IFEDISKCOMMIT RENAME(FMTFHS:FMTFH

25、S2)2.6 D行说明首行填“D”,然后按F4,会出现如下内容: Declaration To / Name E S/U Type From Length Internal Decimal Data Type Positions Keywords Comment2.6.1 内容说明 Name:定义的变量的名字,该名字可以不顶格写。(即允许有缩进)E:标识定义的变量是否源自外部数据结构。可以不填,或填“E”上面的解释可能有点饶口,其实这个地方的意思,就是说:如果是程序内部自行定义一个临时变量,此处不填;如果是引用的一个外部文件作为数据结构,那么这里就要填“E” ;同时“Declaration T

26、ype”处,就要填“DS”,即定义为一个结构;“Keywords”处要使用EXTNAME关键字所谓“引用一个外部文件作为数据结构”,也就是说定义一个结构,整个结构中的变量,参照外部文件来定义。所谓结构,可以理解为一个“由多个变量组合而成的大变量”。举例而言:D MYDS E DS EXTNAME(PFFHS)和D MYDS DSD FHS01 12(1在From项;2在To / length 项)D FHS0234DFHS0356是等价的,都是定义一个结构变量MYDS(名字可以自行定义),这个结构变量是由三个字符型变量FHS01,FHS02,FHS03拼成的。第一种定义方法,就是引用外部文件“

27、PFFHS”作为数据结构的定义,注意使用到了“EXTNAME”关键字,而且“E”项的值为“E”。而第二种定义方法,就是直接定义一个结构“MYDS”。注意没有使用外部文件时,“E”项的值为空。S/U:不知道,一般都填空。Declaration Type:定义变量的类型,允许的值如下:不填:非以下内容:数据结构、常量、独立变量、数组、表。此项为空时,好象只能用来表示当前定义的变量是属于结构的一个变量。在下面会举例DS:数据结构,即定义一个结构变量,这个之前已讲过C:常量常量只能使用字符,不需要定义常量的长度、类型。常量的内容写在“Keywords”处,并使用CONST关键字,在程序段中,不能对常量

28、进行赋值操作。D MYNUM C CONST(abcdefghijklmn)就是定义一个叫做MYNUM的常量,这个常量包含字母a-n。PI:不知道,没有用过PR:不知道,没用过S:定义以下内容:独立变量、数组、表定义一个叫MYFIELD1的变量,变量为1位长的字符型DMYFIELD1S1/1在“To/length”项定义一个叫MYARRAY的数组,共含3条记录,每条记录为1位字符型D MYARRAYS1DIM(3)/DIM在“Keywords”项表的定义没有用过总之,这一项,最常用的,就是“DS”、“S”与空。即结构体与独立变量,其它选项较少用到。From:当“Declaration Type

29、”项为“S”时,表示独立变量、数组,此项不填当“Declaration Type”项为“DS”时,表示结构,此项仍然不填当“Declaration Type”项为空时,表示当前定义的变量,属于上面定义的结构,此时,此项可以填写,也可以不填写。当填写时,“From”项表示变量在结构中的起始位置,右对齐;“To/length”表示变量在结构中的结束位置,也是右对齐。当不填写时,“To/length”表示直接定义为变量长度。举例:D MYDSDSDDSFLD0112/1在“From”项,2在“To/length”项DDSFLD0234与D MYDSDSDDSFLD012/2在“To/length”项

30、DDSFLD022其实是等价的,都是定义一个结构变量MYDS,这个结构变量中,包含了两个变量DSFLD01,DSFLD02,这两个变量都是两位长字符。所不同的是,第一种定义方法,是指定了变量在结构中的位置;而第二种方法,是直接指定变量的长度和类型注意到上面的定义中,DSFLD01、DSFLD02的Declaration Type为空,也就是表示这两个字段是属于上面定义的结构MYDS。如果此项为“S”,即表示这个变量与结构无关D MYDSDSDDSFLD012/2在“To/length”项DDSFLD02S2在这个定义中,变量DSFLD02就是一个独立的变量,与结构MYDS无关。Length:上

31、面已讲述在定义结构时的使用方法。在定义非结构时,此项的内容即为定义变量的长度。右对齐Internal Data Type:定义变量的类型,允许的值有:空:变量定义为字符型、压缩型数字A:变量定义为字符型B:二进制?不知道D:变量定义为日期型F:变量定义为浮点型?G:变量定义为图型?(非英文?汉字?)I:变量定义为带符号的整数N:变量定义为指示器变量?(没用过)P:变量定义为压缩型数字S:变量定义为普通的数型T:变量定义为时间型U:变量定义为无符号的整数Z:变量定义为日期+时间型(格式:年-月-日-时.分.秒.微秒)*:变量定义为指针型其实我最常用,就是不填,因为一般的程序,有字符和数字这两种类

32、型变量,就足够了。Decimal Positions:当变量定义为数字型时,用来标志小数的位数。当“To/Length”项为3,“Internal Data Type”项为空时此项为空,表示定义的变量为3位长的字符型DMYFLD01S3/定义为3位字符型此项不为空(右对齐),表示定义的变量为数字型DMYFLD01S3 2/定义数字型变量,1位整数,2位小数(总长为3位)Keywords:关键字,可以不填,常用的值如下:(同样,这里我也只列出几个常用的,这里先不做详细说明,仅供参考,在后面的例子,看看就知道用法了)CONST:定义常量的值DIM:定义数组EXTNAME:引用外部文件作为数据结构变

33、量EXTFLD:对引用了外部文件作为数据结构的某个变量,进行重命名LIKE:定义变量时,参照已存在的变量定义OCCURS:定义结构体变量时,指定的结构体变量的记录条数INZ:定义变量时,赋值初始值DATFMT:定义日期变量时,指定日期格式*MDY (mm/dd/yy) *DMY (dd/mm/yy) *YMD (yy/mm/dd) *JUL (yy/ddd) *ISO (yyyy-mm-dd)*USA (mm/dd/yyyy)*EUR (dd.mm.yyyy)*JIS (yyyy-mm-dd)Comment注释项,源自RPG,不用填,因为填了也没用。2.6.2 常用例子定义一个10位长的字符型

34、变量:D MYFLDS10定义一个10位长,其中含2位小数的字符型变量,并使其初始值为1D MYFLDS10 2INZ(1)定义一个每条记录为5位长字符型变量,共10条记录的数组D MYFLDS 5DIM(10)定义一个10位长的字符型变量,再定义一个变量,参照前一变量定义D MYFLD01S10D MYFLD02SLIKE(MYFLD01)定义一个结构,由一个3位长的字符变量,和一个10位长,其中2位小数的数字变量组成D MYDSDSD MYDS01 3DMYDS0210 2定义一个结构变量,结构内容参照外部文件PFFHSD MYDSEDSEXTNAME(PFFHS)定义一个结构变量,结构内

35、容参照外部文件PFFHS,并且将第二个字段重命名为FHS999D MYDSEDSEXTNAME(PFFHS)D FHS999EDSEXTFLD(FHS02)定义一个日期型变量,格式为yyyy-mm-ddD MYDATESDDATFMT(*ISO)2.6.3 补充说明变量的定义,除了在D行定义之外,还可以在C行通过赋值语句直接定义如DFLD01S2INZ(01)与CMOVE01FLD012/2在length处,右对齐是等价的定义结构之后,可以将结构变量视为一个普通的变量进行赋值来改变结构变量的值,也可以通过对组成结构变量的变量进行赋值,来达到修改结构变量的值的目的。如:D MYDSDSDMYFL

36、D012DMYFLD022在C行中,这两句是等价的CEVAL%SUBST(MYDS:3:2)=01CEVALMYFLD02=01第一句是直接改结构变量MYDS的后两位的值(当然,此时MYFLD02的值也变化了)第二句是对MYFLD02进行赋值,同样,赋完值之后,MYDS的后两位也变为01在需要频繁进行数字与字符之间转换时,偷懒的人会通过定义这样的结构来达到目的:D MYDSDSDMYFLD0118DMYFLD0218 0比如说,给MYFLD01赋值为20070208之后,MYFLD02也就自动等于20070208;然后给MYFLD02加1之后,MYFLD02等于20070209,MYFLD01

37、的值也自动等于20070209。可以认为结构变量MYDS是字符型(即一直等于MYFLD01的值)这种方法,当需要字符型变量时,就使用MYFLD01;当需要数字变量时,就使用MYFLD02,不过我总觉得有点类似于作弊,一般没用。关于数组、结构体的内容,因为要说起来内容还颇多,而也属于略为高级一些的用法,所以将在后面专设章节讲述。2.7 入口参数程序可以通过“*ENTRY”定义入口参数,或称之为接口参数,来传递数据。假设有程序FHS01ILE,其中入口参数的定义如下:C*ENTRYPLISTCPARMFLD013CPARMFLD024其中:*ENTRY在“Factor 1”项;PLIST在“Operation”项;PARM在“Operation”项;FLD01、FLD02都在“Result”项上述定义,表示这个程序通过两个字段与其它外部程序沟通。那么别的程序(如FHS02ILE)在调用程序FHS01ILE时,就要带上两个字符型变量,如CCALLFHS01ILECPA

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服