*
* Member EMPRPT added to file MYLIB/QRPGLESRC. + *
* *
图14 新成员的编辑屏
在SEU的编辑屏中键入图15中给出的源语句,使用以下的SEU行命令来得到各表提示:
F***************************************************************** F* 模 块 名: EMPRPT F*
* *
* *
F* 有关文件: EMPMST(物理文件)
PRINT (打印文件)
F* 说 明:这个程序打印EMPMST中的雇员信息。 FQSYSPRT O F 80 PRINTER FEMPMST IP E K DISK
D TYPE S 8
IEMPREC 01
C IF ETYPE = 'M' C EVAL TYPE = 'MANAGER' C ELSE
C EVAL TYPE = 'REGULAR' C ENDIF
IPF—文件描述规范表的提示 IPI—输入规范表的提示 IPC—计算规范表的提示
IPCX—有扩展参数2的计算规范表的提示 IPO—对于输出规范表的提示
IPP—对于输出规范表的连续行的提示
F*****************************************************************
OQSYSPRT H 1P 2 6
O 50 'EMPLOYEE INFORMATION'
O H 1P
O 12 'NAME' O 34 'SERIAL #' O 45 'DEPT' O 56 'TYPE' O D 01
O ENAME 20 O ENUM 32 O EDEPT 45 O TYPE 60
图15 成员EMPRPT的源程序
A***************************************************************** A* 说 明:这是物理文件EMPMST的DDS,它的记录格式名为EMPREC。* A* 文件中对每个雇员都有一条记录。 A*
A R EMPREC
A ENUM 5 0 TEXT('EMPLOYEE NUMBER') A ENAME 20 TEXT('EMPLOYEE NAME') A ETYPE 1 TEXT('EMPLOYEE TYPE') A EDEPT 3 0 TEXT('EMPLOYEE DEPARTMENT') A ENHRS 3 1 TEXT('EMPLOYEE NORMAL WEEK HOURS')
*
A*****************************************************************
5、按F3(Exit)退出屏幕,键入Y(Yes)保存EMPRPT。 这样,成员EMPRPT被保存。
图16显示了被EMPRPT所引用的文件的DDS源语句。
A K ENUM
图16 对应于EMPRPT的DDS
使用CRTBNDRPG命令由此源语句建立程序,参见2.2.1.1中的“建立OPM-兼容的程序目标”。
2.1.3 使用DB2/400 SQL语句
在ILE RPG/400程序中嵌入SQL语句,就可以访问OS/400的DB2*,按以下的规则输入SQL语言:
在计算规范表中输入SQL语句。
在7-15列使用/EXEC SQL(/应在第7列)启动SQL语句。 可以在/EXEX SQL的同一行中输入SQL语句。
也可以在接下的行中使用续行符(在第7列输入一个+)来续写源语句。 在第7-15列用/END-EXEC(/在第7列)来表示SQL语句结束。
注意:程序中SQL语句不能超过第80列。 图17显示了嵌入SQL语句的例子。
...+....1....+....2....+....3....+....4....+....5....+....6....+....7.. C
C (ILE RPG/400 calculation operations) C
C/EXEC SQL (the starting delimiter) C+
C+ (continuation lines containing SQL statements) C+ . . .
C/END-EXEC (the ending delimiter) C
C (ILE RPG/400 calculation operations)
C
图17 ILE RPG/400程序中的SQL语句
必须录入单个的命令来处理SQL语句。
详细信息参见DB2/400 SQL编程和DB2/400 SQL参考手册。有关源语句录入实用程序SEU处理SQL语法检查的信息,请参见ADTS/400。
2.1.4 在程序中包括图形数据
在RPGⅣ语言中,现在提供对图形数据类型(G)字段的全面支持。 关于ILE RPG/400图形支持的详细信息,参见 ILE RPG/400参考手册。
2.2 第五章 使用CRTBNDRPG命令建立程序
本章介绍了如何用CRTBNDRPG命令,从RPGⅣ的源语句来建立一个ILE程序。使用这条命令可以建立以下两类的ILE程序。
设有静态连接的OPM兼容程序 有静态连接单模块的IEL程序
建立第一种类型还是第二种类型的程序,取决于CRTBNDRPG命令中的DFTACTGRP参数是规定为*YES还是*NO。建立第一种类型的程序使程序在打开范围,复盖范围和RCLRSC的区域和OPM程序一致。具有这种高级的兼容性是因为它们象OPM程序一样在同一个活动组中运行,即默认活动组。
然而这种高兼容性导致不能进行静态连接,静态连接指的是调用过程的能力(在其它模块或服务程序中)及使用过程指针的能力。换言之,不能在程序中使用CALLB操作码,也不能在程序建立时连接其它模块。
建立第二种类型的程序,使程序具有静态连接的ILE特征。可以在程序建立时指定程序将要在其中运行的活动组以及静态连接的某些模块。另外,可以在程序中使用CALLB操作码。
2.2.1 使用CRTBNDRPG命令
建立连接的RPG(CRTBNDRPG)命令只用一步处理由RPGⅣ源语句建立程序目标。也允许通过使用连接目录连接其它的模块或服务程序。
该命令启动ILE RPG/400编译程序,并在QTEMP库中建立一个临时的模块。然后,把
它连接到类型为*PGM的程序目标中,一旦程序目标建立,用于建立程序的临时模块就被删除。
当你想从独立的源代码(不用连接其他模块的代码)建立程序目标时,CRTBNDRPG命令是很有用的。因为它有建立与连接二个步骤,另外它允许建立与OPM兼容的程序。 注意:如果想保留一些模块目标,以便与其它目标连接成为程序,那么必须用CRTRPGMOD命令建立目标。详细信息参见第6章2.3节中的“使用CRTRPGMOD和CRTPGM命令”建立程序。
可以交互地或批处理或从控制语言(CL)程序中使用CRTBNDRPG命令。如果交互地使用该命令并需要提示的话,键入CRTBNDRPG,然后按F4(提示)。如果需要帮助,那么键入CRTBNDRPG,然后按F1(帮助)。
表2总结了CRTBNDRPG的参数,并给出默认值。 表2
CRTBNDRPG的参数和他们的默认值,按功能分组
指定程序名和库 标识源文件和库 标识包含源规范表的成员 程序的简要描述 程序能建立的错误级别
*GEN/*NOGEN,决定程序是否建立
指定调试视图的类型,如果需要调试,是否包含于程 序中
确定优化级别
确定是否替代已存在的程序 指定用于符号分析的连接目录 指定运行程序的用户配置文件 指定建立程序的授权类型 指出目标运行的软件版本 确定是否产生编译清单
确定是否在清单中显示缩进,并指出标志缩进的字符 指定编译清单的内容
程序标识
PGM(*CLIRLIB/*CTLSPEC) SRCFILE(*LIB/QRPGLESRC) SRCMBR(*PGM) 程序建立 GENLVL(10) OPTION(*GEN)
TEXT(*SRCMBRTXT)
PBGVIEW(*STMT) OPTIMIZE(*NONE) REPLACE(*YES) BNNDIR(*NONE) USRPRF(*USER)
AUT(*LIBCRTAUT) TGTRLS(*CURPENT) 编译清单
OUTPUT(*PRINT) INDENT(*NONE)
OPTION(*XREF*NOSECLVL *SHOWCRY*EXPDDS*EXT) 数据转换选项 CVTOPT(*NONE) ALWNULL(*NO) FIXNBR(*NONE)
指定外部描述文件的数据类型的处理方式 确定程序是否接受容许空值字段的值
确定无效的区十进制数是否被整理转换为压缩型数据.