当前位置:文档之家› AS400开发初阶

AS400开发初阶

AS400开发初阶
AS400开发初阶

AS/400开发初阶

1OS/400 (3)

1.1基本系统概念 (3)

1.2作业 (3)

1.3程序开发 (4)

1.3.1PDM介绍 (4)

1.3.2AS/400的源码编辑器 (5)

1.3.3AS/400的程序 (6)

2DB2/400简介 (8)

2.1DDS简介 (8)

2.2创建一个物理文件PF (8)

2.3创建一个逻辑文件LF (9)

2.4DB2的常工具 (9)

3RPG语言 (9)

3.1H定义 (10)

3.2F数据库引用 (10)

3.3D数据定义 (10)

3.3.1定义格式 (11)

3.3.2例子 (11)

3.4C计算逻辑 (12)

3.4.1常用C源码结构 (12)

3.4.2程序参数 (13)

3.4.3子例程 (13)

3.4.4调用其他程序 (13)

3.4.5程序分支 (13)

3.4.6程序退出 (15)

3.4.7数据库操作 (15)

3.4.8常用RPG操作码 (17)

4后台业务系统开发 (19)

4.1联机交易 (19)

4.1.1交易调试 (19)

1OS/400

1.1 基本系统概念

●对象

AS/400的操作对象称为:Object。

Object包括的信息:

1.包含该对象的库

2.对象名

3.对象类型(*PGM,*FILE,…)

4.对象的属性(对于*FILE,有LF,PF-DTA,PRTF,DSPF)

5.拥有该对象的用户权限

AS/400的对象由(库/对象名/对象类型)唯一确定。

查看某对象:WRKOBJ

●库

库也是一种对象,相当于AS/400的目录。

DOS目录有多级,即目录下有目录。但库只有一级,库下不能有库。

AS/400的文件系统只有3级:库->文件->成员;

例如在APPLIB库下有APPPF的文件,表示为APPLIB/APPPF。

创建库:CRTLIB

●库列表

相当于作业的工作目录,类似于DOS的PA TH

当前作业库列表的常用命令:

dsplibl

edtlibl

addlible

●汉字支持

使用汉字支持:CHGSYSLIBL QSYS2989

不使用汉字支持:CHGSYSLIBL LIB(QSYS2989) OPTION(*REMOVE)

●命令菜单

OS/400中,进入一个菜单,用go menuName

查看某一相关的命令

go CMDxxx xxx代表命令含义的缩写,例如想看与库有关的命令,go cmdlib

1.2 作业

?概念

作业:AS/400所有程序运行以JOB方式

命令:wrkactjob

子系统(subsystem):在OS/400中的一个作业运行环境,该运行环境定义一定的资源,如CPU,内存,IO等。在OS/400中可以定义多个子系统

作业标识:Job name/Job user/Job Number

F11可看到

5-work with看

作业类型:BCH,INT

作业功能:PGM-QEZSCNEP,CMD-WRKACTJOB,MNU-MAIN

作业状态:RUN,DSPW,DEQW,MSGW

常用命令

管理活动作业:wrkactjob

管理某一作业:wrkjob job(Number/User/Name);

管理当前作业:wrkjob; ++3进入dspjob命令

终止作业:wrkactjob+4+option(*immed);

终止当前作业的当前运行程序(例如程序死锁):++2*immed

查看作业日志:dspjoblog;wrkjob; ++3先进入dspjob命令,在选10

查看作业打开的文件:dspjoblog+14

查看作业的库列表:dspjoblog+13

当查看JOB的LOG的信息

1.显示作业的LOG列表

2.将光标移到某行信息,按F1看详细信息

3.看该信息由那一程序产生。再按F9

4.AS/400的信息文件(MSGF,由应用EC/系统定义)

WRKMSGF命令

后台业务系统的MSGF:EC

常用系统MSGF:QCPFMSG

1.2.1程序开发

1.2.2PDM介绍

PDM是AS/400的集成开发环境

AS/400的程序文件结构

库(libraries)/源码文件(objects)/源码成员(members)(程序源码)使用PDM

1.进入PDM命令

STRPDM

2.显示PDM的菜单,选1,并键入指定源码库

3.显示该指定源码库

(1)按F6,创建新源码库

(2)在指定的库,键入12,进入该源码库

4.显示该指定源码库的所有源码文件

(1)按F6,创建新源码文件

(2)键入12,进入指定的源码文件

5.显示该源码文件下的所有源码成员

(1)按F6,创建新的源码成员

(2)键入2,编辑源码

(3)键入3,拷贝源码

(4)键入4,删除源码

(5)键入5,显示源码

6.退出PDM

(1)按F12,退回上一级

(2)按F3,退到PDM菜单1.2.3AS/400的源码编辑器

*启动编辑器:STRSEU命令/PDM

*编辑界面分三部分

行序号——系统产生

数据内容——用户编辑

最后修改日期——系统产生

*左移屏幕F19;右移屏幕F20;

*编辑命令(在行序号上敲入命令)

1.位置

A-在当前行后

B-在当前行前

2.插入行

I-在当前行后,插入一空行

3.删除行

D-删除当前行

4.删除行块

DD-在行块的首行位置,键入DD

DD-在行块的尾行位置,键入DD

回车

5.拷贝行

C-在要拷贝的行位置,键入C

A/B-拷贝到目标位置的后/前

回车

6.拷贝行块

CC-在行块的首行位置,键入CC

CC-在行块的尾行位置,键入CC

A/B-拷贝到目标行位置的后/前

回车

*存盘

在SEU命令行,键入SA VE

*退出SEU

F3

1.2.4AS/400的程序

*程序类型

C

CL

CLLE

RPGLE

*创建程序源码

2.创建一个源码库

CRTLIB LIB(MYLIB)

3.创建一个源码文件

CRTSRCPF FILE(MYLIB/MYSRCPF) RCDLEN(112) IGCDTA(*YES) 4.创建一个源码成员

STRSEU SRCFILE(MYLIB/MYSRCPF) SRCMBR(MYSRCMBR) TYPE(RPGLE) 备注:

(1)源码文件其实是一种类型的数据库文件,该数据库的记录结构由

3个字段构成:

字段名类型长度

SRCSEQ 数字6,2源码行序号

SRCDAT 数字6源码行最后修改日期

SRCDTA 字符100 源码行内容

编写源码行,就相当于往数据库添加记录

(2)程序源码是源码文件中的一个源码成员,源码文件可以包括多个

源码成员

*程序编译

RPGLE程序,使用CRTBNDRPG命令

CRTBNDRPG PGM(PGMLIB/MYPGM) SRCFILE(MYSRCPF/MYSRCMBR)

SQLRPGLEC程序,使用CRTSQLRPGI命令

CL,CLLE程序,使用CRTBNDCL命令

PDM中,编译快捷命令

14 编译

CP RPGLE的编译

CQ SQLRPGLE的编译

*程序编译出错

查编译信息:

使用编译产生的SPOOL FILE,它是一个文本文件,报告编译过程中的相关信息。

用WRKSPLF命令,列出本交互作业的所有SPOOL FILE,找出名字与程序名字相同的最后一个SPOOL FILE,就是最后一次编译所产生的

SPOOL FILE。

查看一般流程:

1.进入SPOOL FILE

2.在Control栏敲入”b”,(bottom),翻到SPOOL FILE的最后

3.在Message Totals: 项中,如果没有(警告/错误/严重错误)的信息,则表示编译通过

Warning (10) . . . . . . . : 0

Error (20) . . . . . . . : 0

Severe Error (30+) . . . . . . : 0

4.如果编译不通过,往前翻一页,按PgUp键,查看错误报告

Msg id Sv Number Message text

*RNF7031 00 108 xxxxxxxx

*RNF7066 00 1 xxxxxxxx

*RNF7030 30 1 xxxxxxxx

5.注意”Sv”中,不为00的项目,即为编译不通过错误语句

6.查看源码中错误语句,在Find栏中,敲入”Sv”不为00的Msg id,例如RNF7030,然后按F16搜索源码,定位在出错的源码语句7.退出SPOOLFILE,重新进入源码编辑,修改源码

8.重新编译

*程序执行

CALL PGM(MYLIB/MYPGM) PARM(“PARM1” “PARM2” “PARM3”)

*程序调试

使用源码调试的程序,使用编译命令编译时参数DBGVIEW不能为*STMT

(1)启动调试

STRDBG PGM(PGMLIB/PGMOBJ)UPDPROD(*YES)(2)设置调试断点

将光标停在断点源码行,按F6。如要取消断点,再按F6

可以设置多个断点

(3)完成设置断点后,退出

(4)调用程序,进入程序并停在断点

CALL PGM(BANKOBJ/MYRPGLE)

(5)调试命令

*单步执行F10

*多步执行F12

*可以重新设置/取消断点F6

*显示变量值V AR1

方法1.将光标移到该变量V AR1,按F11

方法2.在debug命令行,键入EV AL VAR1

*改变变量值V AR1

EV AL V AR1=xxxxxx

(6)退出程序

F3

(7)结束调试

ENDDBG

2DB2/400简介

2.1 DDS简介

DDS(数据描述规范)是一种源码,是创建物理文件、逻辑文件、显示文件等源码。

使用PDM编写DDS

2.2 创建一个物理文件PF

物理文件是存放实际数据的数据库文件。

源码类型:PF

PF DDS的内容分4部分

(1)文件级关键字

作用范围:整个PF

REF(PFNAME)字段定义参照自PFNAME的字段

UNIQUE 控制索引键字唯一

(2)记录定义

*定义记录

名称类型为R

R RCDNAME

*记录级关键字

FORMAT(PFNAME)记录结构参照自PFNAME的记录结构

….

(3)字段定义

*字段名

*字段类型

P-压缩型数字

S-区位型数字

‘’或A-字符

L-日期

T-时间

O-支持汉字的字符

*字段级关键字

COLHDG(‘字段描述’)

(4)索引键字

如果有索引键字定义,则该数据库文件包含索引

名称类型为K

可以有多个键字

编译DDS,创建PF

CRTPF命令

或14

2.3 创建一个逻辑文件LF

逻辑文件是索引文件

(1)文件级关键字

UNIQUE 控制索引键字唯一(2)记录级关键字

PFILE(PFNAME)逻辑文件对应的物理文件(3)索引键字

名字类型K

可以有多个索引键字

2.4 DB2的常工具

?RUNQRY

浏览数据库文件

RUNQRY QRYFILE((AM1))

RUNQRY QRYFILE((AM1)) RCDSLT(*YES)

?UPDDTA

UPDDTA FILE(BANKDTA/MYPF)

增加/更新/删除记录

1.F9 当前插入记录

2.F23 删除当前记录

3.回车更新当前记录

4.F3 退出

?STRSQL

执行SQL语句

3RPG语言

RPGLE的结构分为以下几部分

3.2 F数据库引用

每一行F源码结构:

定义格式:

●文件名字

●使用类型

I 只读

O 只写,不能更新

U 更新

●文件指定

F 全过程文件

●文件添加

A 文件可以进行记录

●文件格式

E 外部描述文件

●地址类型

空不使用索引语句,不能用CHAIN,SETxx语句

K 使用索引语句

●设备

DISK 数据库文件

●关键字

PREFIX(xxx)引用数据库字段前加前缀xxx

COMMIT 使用数据更新的确认/回滚机制

程序中使用COMMIT,该作业必须事先启动COMMIT控制

启动COMMIT:STRCMTCTL LCKLVL(*CHG)

关闭COMMIT:ENDCMTCTL

USROPN 用户程序自定义打开。

如果没有该关键字,程序打开时就打开文件。

3.3 D数据定义

每一行D源码结构:

●数据名称

●说明类型

C 常量

S 独立变量

DS 数据结构

●长度

●数据类型

空/A 字符

D 日期

P/S 压缩/区位数字

T 时间

* 指针

●小数位长度

●关键字

3.3.2例子

●定义常量

C_V AR C 'HELLO' ●定义字符变量

V_STR S 10 A

●定义数值变量

V_NUM S 14 S 2

小数点定义要右对齐、

●定义日期变量

V_DA TE S D

系统默认使用*ISO日期格式,即2002-09-21格式

●定义时间变量

V_TIME S T

●定义数组

定义有10个元素的字符数组

V_DIM S 10 A DIM(10)

数组元素使用,建议使用RPG IV的格式。

V_DIM(N)

●定义数据结构

ACCT DS

CUNO 10 A

ACSF 5 A

3.4 C计算逻辑

3.4.1常用C源码结构

每一行C源码结构:

●指令因子1

●指令操作码

●指令因子2

●执行结果

●长度

如果执行结果字段不是在D数据定义部分定义的,这需要在该行源码定义

●小数位长度

如果执行结果字段不是在D数据定义部分定义的,这需要在该行源码定义

●Hi指示器

Hi指示器。指示器的概念:对于执行了某些RPG指令,系统将视情况改变指示器的值。

指示器只有两个值:*ON/*OFF,或者’1’/’0’

例如按某索引键字定位数据库文件某一记录

KEY CHAIN RCD 80

该语句定义了*IN80指示器。

数据库PF不存在有KEY这个索引键字的记录,则*IN80被系统置为*ON;否则置*OFF

●Lo指示器

●Eq指示器

3.4.2程序参数

*ENTRY PLIST

PARM parm1

PARM parm2

3.4.3子例程

子例程

*概念:相当于程序里的过程

*使用:

(1)定义子例程代码段

在程序最后定义:形式

SRNAME BEGSR

….//子例程代码

ENDSR

(2)执行子例程

EXSR SRNAME

自定义子例程

有(1)部分,也有(2)部分

系统子例程

有(1)部分,但由系统执行

*INZSR -程序的初始化,执行程序首先执行该子例程3.4.4调用其他程序

CALL ‘PGMNAME’

PARM PARM1

PARM PARM2

3.4.5程序分支

逻辑表达式

使用OR、AND、NOT

●IF选择语句

IF / ENDIF

例子:

IF V AR1=’var1’ OR

V AR2=’var2’

。。。

ENDIF

●SELECT多项选择语句

SELECT / WHE / OTHER /ENDSL

例子:

SELECT

WHEN V AR1=’var1’ AND V AR2=’var2

。。。

WHEN V AR1=’rav2’

。。。

OTHER

。。。

ENDSL

●DOW循环语句

DOW / ENDDO

例子:

DOW NUM1<=50 AND NUM1>10

。。。

IF NUM1<=30 AND NUM1>20

ITER //重新回到循环开始

ENDIF

。。。

IF NUM1<40 AND NUM1>35

LEAVE

ENDIF

。。。

ENDIF

●GOTO跳转

(1)定义跳转标签

T_END TAG

(2)执行GOTO

GOTO T_END

3.4.6程序退出

EVAL *INLR=*ON

RETURN

3.4.7数据库操作

3.4.7.1 检索记录

●使用检索条件

*对于不使用索引的数据库,RPG程序中不能检索记录,只能顺序存取记录。

*对于使用索引的数据库,RPG可以检索记录

●精确定位检索方式

直接按键字定位记录,并读取记录数据

使用CHAIN指令

K_AM CHAIN RAM 80

系统先将*IN80初始化为*OFF

如果找到记录,则*IN80=*OFF。找不到记录,则*IN80=*ON

使用%FOUND,代替指示器操作

●模糊定位检索方式

分两步:

1.先按键字模糊定位记录,使用SETLL、SETGT指令

例如:有一PF(记录格式名RCD)有三条记录:

KEY1 RECORD1

KEY2 RECORD2

KEY3 RECORD3

◆使用SETLL情况:

执行:

KEY2 SETLL RCD

KEY1 RECORD1

存取游标—>

KEY2 RECORD2

KEY3 RECORD3

◆使用SETGT情况:

执行:

KEY2 SETGT RCD

KEY1 RECORD1

KEY2 RECORD2

存取游标—>

KEY3 RECORD3

2读取邻近记录,使用READ、READE、READP、READPE指令例子:

假设游标已经停在KEY2和KEY3之间。

◆READ

往下读取一条记录

READ RCD 80 将读取到KEY3的记录

◆READE

往下读取指定键字的记录

KEY3 READE RCD 80 将读到KEY3的记录

KEY2 READE RCD 80 将读不到记录,*IN80=*ON

◆READP

往上读取一条记录

READP RCD 80 将读取到KEY2的记录

◆READPE

往上读取指定键字的记录

KEY2 READPE RCD 80 将读取到KEY2的记录

KEY3 READPE RCD 80 将读不到记录,*IN80=*ON

3.4.7.2 更新记录

使用UPDATE指令,分两步

1.必须用CHAIN精确定位要更新的记录

2.UPDATE

UPDA TE RAM

3.4.7.3 写记录

使用WRITE指令

WRITE RAM

3.4.8常用RPG操作码

●MOVE

用于字符/数值/日期等类型

?MOVE

MOVE ‘HELLO’ STR1 10 STR1=’ HELLO’

?MOVEL

MOVEL ‘HELLO’ STR1 10 STR1=’HELLO ’

?MOVE(P)

先清空变量,再MOVE

●EV AL

用于字符/数值/日期等类型

EV AL STR1=’HELLO’

EV AL NUM1=(2+3)*5/10

EV AL DATE1=D’2002-09-21’

●内置函数

◆%SUBST

取子串

字符串2=SUBST(字符串1:要截取的:截取长度)

EV AL STR1=’HELLO WORLD’

EV AL STR2=%SUBST(STR1:7:5)

STR2=’WORLD’

◆%TRIM

去掉字符串空格

EV AL STR1=’HELLO WORLD ’

EV AL STR2=%TRIM(STR1)

STR2=’HELLO WORLD’

●日期操作

计算两个日期间的天数、月数、年数

EV AL DATE1=’2001-09-15’

EV AL DATE2=’2002-09-22’

DATE2 SUBDUR DATE1 DNUM:*D

DATE2 SUBDUR DATE1 MNUM:*M

DATE2 SUBDUR DATE1 YNUM:*Y

DNUM为两日间的天数

MNUM为两日间的月数

YNUM为两日间的年数

计算某一日,相隔一段时间的日期

EV AL DATE1=’2002-09-22’

DATE1 SUBDUR 3:*D DATE2

DATE1 ADDUR 4:*M DATE3

DATE1 SUBDUR 5:*Y DATE4

DATE2为相对于’2002-09-22’前3天的日期,即为’2002-09-25’

DATE3为相对于’2002-09-22’后4个月的日期, 即为’2003-01-22’

DATE2为相对于’2002-09-22’前5年的日期,即为’1997-09-22’

详细的指令集,参看RPG Reference.

4后台业务系统开发

4.1 联机交易

●交易流程

(1)柜员在网点终端选择交易界面,录入交易数据,并提交交易

(2)前台SCO服务器将柜员录入的交易数据组成一个数据串(包),通过TCP/IP通讯发送到AS/400主机

包结构定义:

在AS/400的comlib库上,有comm.txt文件,定义了所有交易的包结构(3)AS/400后台通讯服务器接收到数据包,根据包里定义的处理码字段,调用相应的RPG程序。

处理码与程序对应关系

在AS/400的comlib库上,有TRXNLOAD. TRXNLOAD,定义了所有处理码

与RPG程序的对应关系

(4)RPG程序运行,并返回信息给AS/400后台通讯服务器

(5)后台通讯服务器将返回信息发送给前台SCO服务器。

(6)前台SCO服务器显示主机返回信息到网点终端

●前台

进入联机交易程序,执行cx

相关配置cx.def:

SERVER 192.168.1.20 AS/400的IP地址

PORTNM 1039 AS/400的通讯端口

REGION 0116 交易网点号

●后台

后台的交易处理程序

*通讯程序COMLIB

*可执行程序放在BANKOBJ

*源码放在BANKSRC

*交易数据放在BANKDTA

4.1.1交易调试

调试流程

(1)记录交易数据包

●交易用户在前台的交易录入交易数据,并向主机提交

●主机执行RPG交易程序

写交易日记PI表,记录前台上传的数据包

PI表的结构:

TSRF:交易流水号,为每一笔交易分配一个唯一序号

BAG:数据包内容

(2)交易程序调试

●从数据包确定4位长处理码

?根据包前4位的包名,查comlib/comm..txt;

?确定出处理码(PRID)在包的位置

?根据处理码位置,确定处理码

●确定RPG交易程序

根据处理码,查COMLIB库中的TRXNLOAD. TRXNLOAD,确定RPG处理程序

●调用调试程序

CALL PGM(DEBUGPGM) PARM('交易程序名’ '该笔交易流水号')

●进入调试状态,源码调试

AS400_RPG入门

一: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等。 产用的设备类型有:

as400系统操作

目录 第一章系统操作快速参考 (2) 辅助级别 (2) 控制设备 (3) 控制作业 (4) 获得AS/400 系统信息 (6) 处理消息 (7) 管理系统 (9) 处理故障 (11) 恢复信息 (12) 保存信息 (13) 开启和关闭AS/400 系统 (14) 使用通讯 (15) 使用磁带 (16) 使用打印机输出 (17) 使用安全 (19) 第二章DOMINO FOR AS/400 安装、配置和管理 .............................. 错误!未定义书签。 安装DOMINO FOR AS/400 ......................................................... 错误!未定义书签。 配置DOMINO FOR AS/400 ......................................................... 错误!未定义书签。 管理DOMINO FOR AS/400 ......................................................... 错误!未定义书签。

第一章系统操作快速参考 辅助级别 改变辅助级别 菜单路径: 从任何界面(如果允许) 按 F21 命令: CHGPRF ASTLVL(*BASIC, *INTERMED, or *ADVANCED) 注释: ●辅助级别 (ASTLVL) 参数是可以由一些 CL 命令单独去定义这些命令的辅助显示级别。 例如:键入命令 wrksplf astlvl(*intermed)在使用 Work with All Spooled Files 界面时可以看到 intermediate 的辅助级别 ●F21 (选择辅助级别)可以在单独的界面上改变辅助级别 ●改变用户简要表(CHGPRF)命令可以设置该用户所有命令的辅助级别

银行核心系统环境管理之AS400版本部署

银行核心系统环境管理之 AS400版本部署 ***项目组 ***核心系统现已进入UAT测试阶段,现将我们项目组的核心版本部署以及发布流程做一个系统的说明。 ***FAT核心系统的基础库列如下: SRCFATGS SRCFATGF SRCFATGD I725DCBASI I725NLCITP I725NCCHP I725IFIXP I725IBASP I725CSMSPT QGPL QTEMP 在FAT测试的初始阶段,该库列就是FAT的核心库列,其中:SRCFATGS,SRCFATGF,SRCFATGD为数据库,I725DCBASI为程序库,其它为ICBS及AS400系统的基础库。版本流程如下: 为了更规范的符合测试工程的流程,每个测试轮次开始时,我们需要取得核心最新最全的代码以及最完整的数据库脚本。这样,就有了我们现在所使用的PRAM环境和UAT环境,再者,以前的FAT环境(I725DCBASI)作为我们基础库,永远保存我们最新的程序源码和目标码。请参考如下的库列结构:PRAM(SIT环境)UAT (FAT测试环境) SRCPARMS I725CSMSP SRCPARMF SRCUA T1S SRCPARMD SRCUAT1F I725PRAMMT SRCUA T1D I725PARMMU I725DCPGMT I725NLCIT I7 25DCPGMU I725NCCHP I725NLCITP I725IFIXP I725NCCHP I725IBASP I725IFIXP QGPL I725IBASP QTEMP QGPL I725CSMSP QTEMP 说明:库列结构大致一样,数据库:SRC....S/F/D;程序库:I725.....MT/MU。 其中,SRC.....S存放参数,SRC....F存放文件,SRC....D存放核心交易数据;

实验六 索引的创建和使用(课件)

实验六索引的创建和使用 建议学时:2 实验目的: 1)了解索引的概念、优点及分类。 2)掌握在SQL Server Management Studio 中创建、修改和删除索引的操作。 3)掌握使用T-SQL语句创建、修改和删除索引的操作。 实验内容及步骤: (一)索引的概念 数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。 索引的优点: 1.可以大大加快数据检索速度。 2.通过创建唯一索引,可以保证数据记录的唯一性。 3.在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。 4.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。 5.可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。 索引的分类: 1.聚集索引 聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储,表中的物理顺序和索引中行的物理顺序是相同的。 2.非聚集索引 非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引包含索引键值和指向表数据存储位置的行定位器。可以对表或索引视图创建多个非聚集索引。设计非聚集索引是为了改善经常使用的、没有建立聚集索引的查询的性能。 3.唯一索引 确保索引键不包含重复的值。聚集索引和非聚集索引都可以是唯一索引,这种唯一性与主键约束是相关联的,在某种程度上,主键约束等于唯一性的聚集索引。 (二)SSMS中索引的管理 1.新建索引 【例1】为GZGL数据库中的employee表新建非聚集索引i_emp_age,要求按emp_age 升序完成。 ①在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。右键单击【索引】,然后单击【新建索引】→【非聚集索引】,如图3-45所示。 ②出现的【新建索引】对话框,如图3-46所示。在【索引名称】文本框中输入新建索引的名称i_emp_age,在下面的复选框中可设定是否唯一。 ③在【索引键列】可使用旁边的【添加】按钮添加要设定索引的属性,弹出选择列对话框,如图3-47所示,选择emp_age,然后单击【确定】按钮。 ④返回【新建索引】对话框,在如图3-48所示的【索引键列】中可设置【排序次序】等属性,最后单击“确定”按钮,即可生成新的索引。 如果需要建立基于多个属性的复合索引,可在步骤③中添加多个属性。

IBM_AS400_RPG学习手册

1 简单说明 (3) 2 程序代码行的编写 (3) 2.1 最简单的RPGLE程序 (3) 2.2 举例准备 (3) 2.3 简单的程序流程 (4) 2.4 常见的程序流程 (5) 2.5 F行说明 (5) 2.5.1 内容说明 (5) 2.5.2 常用例子 (9) 2.5.3 补充说明 (10) 2.6 D行说明 (10) 2.6.1 内容说明 (10) 2.6.2 常用例子 (13) 2.6.3 补充说明 (14) 2.7 入口参数 (14) 2.8 C行说明 (16) 2.8.1 写在前面 (16) 2.8.2 内容说明 (17) 2.8.3 ILE操作码分类: (18) 2.8.4 ILE操作码 (19) 2.8.4.1 A--C (19) 2.8.4.2 D--E (27) 2.8.4.3 F--N (32) 2.8.4.4 O--R (39) 2.8.4.5 S--Z (43) 3 和程序相关的数据库知识 (49) 3.1 LF(逻辑文件) (49) 3.1.1 逻辑文件概念 (49) 3.1.2 有关编译的问题 ..................................................... 错误!未定义书签。 3.1.3 逻辑文件对效率的影响 (51) 3.2 MEMBER (51) 3.3 游标 (52) 3.3.1 游标的概念 (52) 3.3.2 不同操作码对应的游标的处理 (52) 3.3.3 “有且仅有”的游标 (53) 3.3.4 LOV AL、HIV AL对应的游标操作 (53) 3.4 事务处理-- COMMIT (54) 3.4.1 概念描述 (54) 3.4.2 使用方法 (54) 3.4.3 注意事项 (55) 3.5 关于锁表的问题LCKW (56) 4 DEBUG调试以及常见出错信息 (56)

AS400 基本命令和操作

数据描述规范DDS通过文件的记录字段仅一次的说明,可定义多种访问路径,多个程序使用。 结构化查询语言SQL/400组成:(1)SQL运行支持程序(2)SQL预编译程序(3)SQL交互式接口(4)DB2 QUERY MANAGER FOR AS/400,提供菜单、填空式提示的交互式接口,允许建立、增加、维护数据,和运行报表 PDM(PROGRAMMING DEVELOPMENT MANAGER)处理源代码、对象和库 SEU(SOURCE ENTRY UTILITY)建立和编辑源文件成员STRSEU SDA(SCREEN DESIGN AID)交互式设计、创建和维护应用屏幕 RLU(REPORT LAYOUT UTILITY)交互式定义打印报表的格式分布 DFU(DA TA FILE UTILITY)快速定义、创建面向数据录入、查询或文件维护STRDFU QUERY/400获取外部描述数据库文件信息STRQRY CL(CONTROL LANGUAGE)调用AS/400的所有系统功能。简化操作,控制工作流程,设置作业运行环境等 AS/400三级存储结构 库(LIBRARY)——数据库文件(FILE)——成员(MEMBER) 一级目录——二级目录——三级目录 字段是用来描述某一属性的一组值;字段定义是对字段属性的说明 记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明 文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。 物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。CRTPF 逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。CRTLF 源文件(*FILE,PF-SRC):是系统用来建立源程序(RPGLE、CLLE、C)或源物理文件(PF)等目标的源说明CRTSRCPF 库名:存放该应用系统的源程序库就命名为SGM SRC,存放该应用系统目标的库可命名为SGM OBJ CRTLIB 源文件名:存放程序的源文件叫R+PGM+SCF,存放物理文件和逻辑文件定义的源文件叫R+DTA+SCF 物理文件/逻辑文件名:学生成绩表命名为STGD+A其中一个逻辑名为STGD L1 程序名:SGM+0400+R‘R’:RPGLE,‘C’:C,C或CL,‘R’:报表等 DDS行中对物理文件有效的位置是: 6:A=DDS 17:R=RECORD NAME ,K=KEY FIELD NAME,BLANK=FIELD NAME)

AS400系统相关知识点(参考模板)

1、level identifier 用于查看当前物理文件编译的时间与程序中的物理文件编译时间是否相同: ①输入dspfd命令查看物理文件中记录格式的level identifier ②输入dsppgmref命令查看程序中的物理文件的记录格式的level identifier ③比较两个level identifier是否相同。 2、OVRBDF成员覆盖 用于查看多成员的物理文件中某一个成员内容: ①输入ovrdbf命令,输入物理文件名以及要查看的成员名

注:dspfd查看物理文件中所有成员中的数据条数; 若想在程序中调用多成员的物理文件中的某个成员,可以 callb #ovrmbr;其中#ovrmbr为cl程序。可以通过登录用户名为YTCZY密码YTCZY进入系统,FCBATXPSRC\PFSMODSRC中查看#ovrmbr的源码。 3、DSPUSRPRF 查询用户全名以及基本信息。 4、跑批相关物理文件 pffwn8, pffwm8, pffdn2, pffmn4 pffwm8物理文件中的错误信息码BCS8099为系统错误,要到假脱机中查看信息。

5、系统出现如CPF4326错误时,用WRKMSGD查看详细信息。 6、Shift+esc ①按ctrl键查看可选命令; ②输入3查看当前作业—>输入10查看作业日志信息

③输入3查看当前作业—>输入14查看该界面数据用了哪些物理文件 7、CHGPF修改物理文件参数。 8、使注释的文字变色 Shift+F1—>PFSEUEXIT(user exit program) 人降生于世,其实是一件了不得的大事,因为他的人生也会一同降世。

20150629-AS400测试—答案

AS400基础考核--答案 一、填空题(每小题2分,共20分) 1、编译RPG和RPGLE的CL命令分别是:CRTRPGPGM和CRTBNDRPG。 2、编译PF和LF的CL命令分别CRTPF和CRTLF 。 3、编译CLP程序的CL命令是:CRTCLPGM。 4、创建源物理文件的CL命令是:CRTSRCPF。 5、%MONTHS是为指定日期加上或减去给定月份数,现执行以下语句: D’2011-05-31’+%MONTHS(1), 运行结果是:2011-6-30。 6、查看假脱机文件的命令是:WRKSPLF。 7、CL中日期格式转换命令是:CVTDAT。 8、复写物理文件命令是:OVRDBF。 9、为物理文件添加日志的命令是:STRJRNPF;启用日志 的命令是:STRCMTCTL。 10、修改编译时的库列表的命令是:EDTLIBL ;常用缩 写是:EL 。 二、ILE操作码(每小题2分,共40分) 1、日期时间相加ADDUR 2、定位操作--小于语法SETLL 3、监控程序信息MONITOR 4、将一个字符串中指定的字符,更换成另外的字符XLATE 5、修改记录UPDATE 6、取当前系统时间TIME 7、打开指示器SETON 8、数学运算-乘: MULT 9、数组赋值MOVEA 10、执行子过程EXSR 11、屏幕显示DSPLY 12、根据已知字段来定义新字段DEFINE 13、删除当前记录DELETE 14、清除内容CLEAR 15、检查对象变量中的字符CHECK 16、按键值对文件记录进行查询定位CHAIN

17、字符连接CAT 18、带条件的调用子过程CASXX 19、数学运算-取余MVR 20、日期相减SUBDUR 三、常用函数解释(每小题2分,共20分) 1、%CHAR() 转换为字符数据 2、%ERROR() 返回错误状态 3、%DEC() 转换为压缩十进制格式 4、%EDITC() 使用编辑代码编辑值 5、%FOUND() 返回查找条件 6、%XLATE() 字符转换 7、%SUBST() 截取字符串 8、%TRIMR() 剪切尾部空格 9、%CHECKR() 逆向检查 10、%ADDR() 获取变量的地址 四、SQL(每小题2分,共10分) 根据以下四张表: Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 完成以下SQL。(注:学生表的唯一键值是S#) 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# select a.S# from (select s#,sc ore from SC where C#=’001′) a, (select s#,score from SC where C#=’002′) b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like ‘李%’;

AS400安全与权限管理

AS/400安全与权限管理 AS/400安全体系包括系统安全、用户控制和资源保护三个层次,融贯于整个计算机系统中。可以说从外部硬件到系统内部,从用户登录开始,到用户访问的每一界面(菜单、命令行等),访问的任何资源,安全检查一直处于活跃状态。能有效地对数据进行保护,免遭破坏和非法访问。 本单元介绍OS/400的包括用户描述、与安全相关的系统参数、权限表、组描述、安全工具及安全向导等安全概念。 安全包括系统内置的用来控制系统设备、数据、系统上安装程序使用的安全措施。安全阻止未授权的用户访问数据,从而保护数据的完整性。 菜单是用来控制用户访问权限的方法之一。用户描述扩展了此权限,可控制用户的登录。 1 系统安全 1.1 Security Types

Figure 7-1. Types of Security There are 3 types of security on the AS/400 system: Physical security 、Sign-on security and Resource security Physical security Physical security provides protection of your AS/400 system, device, device output and media on which data is stored from accidental or deliberate loss or damage. Resource Security Resource security protects the data on the system by limiting access to files, programs, libraries, and other objects. Sign-on security Sign-on securitylimits who can sign on to an AS/400 system and what they can do when they sign on (for example, which menu options appear). 对于AS/400计算机系统来说,系统应该有三级安全保护机制。物理安全性(Physical Security)、登录安全性(Sign-on Security)和资源安全性(Resource Security)。物理安全性是指提供系统和相关设备及存贮数据介质的保护,以防意外或有意的数据丢失、破坏。登录安全性限制谁可以在系统上登录,以及登录后可以执行那些操作。资源安全性是在用户登录系统后,附加的用于保护对象和对象中数据安全性,避免非法访问。这里我们主要讨论后两种安全性管理。 1.2 Security Levels

数据库建立索引的原则

数据库建立索引的原则 使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。 在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。 建立索引的优点 1.大大加快数据的检索速度; 2.创建唯一性索引,保证数据库表中每一行数据的唯一性; 3.加速表和表之间的连接; 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。 索引的缺点 1.索引需要占物理空间。 2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。 根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。有关数据库所支持的索引功能的详细信息,请参见数据库文档。 提示尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。有关这些约束的更多信息,请参见主键约束和唯一约束。 唯一索引

唯一索引是不允许其中任何两行具有相同索引值的索引。 当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee 表中职员的姓(lname) 上创建了唯一索引,则任何两个员工都不能同姓。 有关唯一索引的更多信息,请参见创建唯一索引。 主键索引 数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。有关主键的更多信息,请参见定义主键。 聚集索引 在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。 如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。 一、索引 1. 概念:索引是揭示文献内容出处,提供文献查考线索的工具书。 2. 类型:种类很多,从不同的角度可以划分出不同的类型。按文种分,可以分为中文索引的外文索引;按收录范围分,可以分为综合性索引和专题性索引;按收录文献的时间分,可以分为近期索引和回溯性索引;按索引款目的标目分,可以分为题名索引、著者索引、语词索引、主题索引、分类索引等。 3. 功能:揭示文献的内容和指引读者查找信息 4. 作用:索引揭示了一书、一刊的基本情况,如篇目、文句。可以深入、完整、详细、系统地为读者提所需文献的具体线索。 铁律一:天下没有免费的午餐,使用索引是需要付出代价的。 索引的优点有目共睹,但是,却很少有人关心过采用索引所需要付出的成本。若数据库管理员能够对索引所需要付出的代价有一个充分的认识,也就不会那么随意到处建立索引了。

索引的建立和运用

一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣, 但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。 系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见 对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL 语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中 写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们 应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。 二、SQL语句编写注意问题 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。 在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用 全表扫描,这就造成了响应速度的极大降低。 1. IS NULL 与IS NOT NULL 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null, 该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 2. 联接列 对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。 我们一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME), 现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。 下面是一个采用联接查询的SQL语句, select * from employee where first_name||''||last_name ='Beill Cliton'; 上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有 使用。 当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。 Select * from employee where first_name ='Beill' and last_name ='Cliton'; 遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着Bill Cliton这个员工的姓名,对于这种情况我们又如何避免 全程遍历,使用索引呢?

AS400开发初阶

AS/400开发初阶

1OS/400 (3) 1.1基本系统概念 (3) 1.2作业 (3) 1.3程序开发 (4) 1.3.1PDM介绍 (4) 1.3.2AS/400的源码编辑器 (5) 1.3.3AS/400的程序 (6) 2DB2/400简介 (8) 2.1DDS简介 (8) 2.2创建一个物理文件PF (8) 2.3创建一个逻辑文件LF (9) 2.4DB2的常工具 (9) 3RPG语言 (9) 3.1H定义 (10) 3.2F数据库引用 (10) 3.3D数据定义 (10) 3.3.1定义格式 (11) 3.3.2例子 (11) 3.4C计算逻辑 (12) 3.4.1常用C源码结构 (12) 3.4.2程序参数 (13) 3.4.3子例程 (13) 3.4.4调用其他程序 (13) 3.4.5程序分支 (13) 3.4.6程序退出 (15) 3.4.7数据库操作 (15) 3.4.8常用RPG操作码 (17) 4后台业务系统开发 (19) 4.1联机交易 (19) 4.1.1交易调试 (19)

1OS/400 1.1 基本系统概念 ●对象 AS/400的操作对象称为:Object。 Object包括的信息: 1.包含该对象的库 2.对象名 3.对象类型(*PGM,*FILE,…) 4.对象的属性(对于*FILE,有LF,PF-DTA,PRTF,DSPF) 5.拥有该对象的用户权限 AS/400的对象由(库/对象名/对象类型)唯一确定。 查看某对象:WRKOBJ ●库 库也是一种对象,相当于AS/400的目录。 DOS目录有多级,即目录下有目录。但库只有一级,库下不能有库。 AS/400的文件系统只有3级:库->文件->成员; 例如在APPLIB库下有APPPF的文件,表示为APPLIB/APPPF。 创建库:CRTLIB ●库列表 相当于作业的工作目录,类似于DOS的PA TH 当前作业库列表的常用命令: dsplibl edtlibl addlible ●汉字支持 使用汉字支持:CHGSYSLIBL QSYS2989 不使用汉字支持:CHGSYSLIBL LIB(QSYS2989) OPTION(*REMOVE) ●命令菜单 OS/400中,进入一个菜单,用go menuName 查看某一相关的命令 go CMDxxx xxx代表命令含义的缩写,例如想看与库有关的命令,go cmdlib 1.2 作业 ?概念 作业:AS/400所有程序运行以JOB方式 命令:wrkactjob

AS400系统培训笔记

AS400系统培训笔记 一、sysid:system name 二、升级微码和增加cpu是需要新的system password,换cpu时需要输入原来的system password。 3、p170面板: 01:display启动方式。 02:设置启动方式。 03:启动。 04:测试报警灯。 11:选择设置值。 s:slow f:fast v=f(上次启动正常) v=s(上次启动失败) A:A区 B:B区 C:IBM实验用 D:外部设备(磁带、光驱) N:normal M: manual 三、常用巡检命令: 1、wrkdevd *opt|*tap 2、dsptap 3、dspopt 4、wrkshrpool:内存 5、wrkhdwrsc type(*stg):硬盘状态 6、wrkhdwrsc type(*prc):cpu和内存状态, 7、wrkhdwrsc type(*cmn):网卡状态 8、wrksyssts 9、wrkdsksts:硬盘(%busy一般不超过40%) 10、dsplog F4 11、wrklicinf:查看版本号等 12、cfgtcp 13、pwrdwnsys:关闭系统 三、系统知识 1、AS:application system 2、cfgtcp、wrkhdwrsc *cmn:配置网卡 3、crtlineth 4、AS400上不支持SNA 5、strtcp:激活tcp 6、AS/400的分层机构:application|os/400|slic|64-bit RISC。(slic:system

license internal code) 7、系统能登陆中进sst(strsst)看log,系统不能登陆进dst看log。 8、src:system ref code 9、pal:product activity log 10、打印系统配置:strsst-start a services tool-hardware services manager-f6=print configuration-退出sst-wrksplf (F4选择相应的项) 11、dspmsg qsysopr 12、黄灯不报警:cpu、内存、风扇没问题,机器可以正常工作。 13、wrksyssts:当%system ASP USED超过90%时,在 dspmsg qsysopr中有相应的报警信息,一般不超过%80。 14、go cleanup:清理系统日志垃圾。 15、wrkactjob 16、恢复被disable权限的用户:strsst-work with services tools uers ids 17、网络:wrklind,crtlineth,sfgtcp,strtcp,dspjoblog. 18、system request:shift + esc 后 enter键回车。

SQL 创建索引的作用以及如何创建索引

SQL 创建索引的作用以及如何创建索引 SQL 创建索引的作用 一、使用索引的优点: 1、通过唯一性索引(unique)可确保数据的唯一性 2、加快数据的检索速度 3、加快表之间的连接 4、减少分组和排序时间 5、使用优化隐藏器提高系统性能 二、使用索引的原则: 1、在需要经常搜索的列上创建索引 2、主键上创建索引 3、经常用于连接的列上创建索引 4、经常需要根据范围进行搜索的列上创建索引 5、经常需要排序的列上创建索引 6、经常用于where子句的列上创建索引 三、不创建索引的原则: 1、查询很少使用和参考的列不建索引 2、对只有少数值的列不建索引 3、定义为text、image、bit的列不建索引 4、当需要update性能远远高于select性能时不应建索引 四、常用的命令: 1、sp_helpindex :报告表或视图上的索引信息 2、dbcc showcontig :显示指定表的数据和索引的碎片信息 3、dbcc dbreindex :重建指定数据库中一个或多个索引 4、dbcc indexdefrag :整理指定表或视图的聚集索引或辅助索引的碎片 五、优化索引: 1、重建索引(dbcc dbreindex) 2、索引优化向导 3、整理指定的表或视图的聚集索引和辅助索引碎片(dbcc indexefrag) 如何创建索引 CREATE INDEX 语句用于在表中创建索引。 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。索引 您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。 SQL CREATE INDEX 语法 在表上创建一个简单的索引。允许使用重复的值: CREATE INDEX index_name ON table_name (column_name) 注释:"column_name" 规定需要索引的列。 SQL CREATE UNIQUE INDEX 语法 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。CREATE UNIQUE INDEX index_name ON table_name (column_name) CREATE INDEX 实例 本例会创建一个简单的索引,名为"PersonIndex",在Person 表的LastName 列: CREATE INDEX PersonIndex ON Person (LastName) 如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字DESC: CREATE INDEX PersonIndex ON Person (LastName DESC) 假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:CREATE INDEX PersonIndex ON Person (LastName, FirstName)

RPG AS400程序员培训手册6

5 CL、CMD 其实有关这一章,以及屏幕文件的,在网上已经有很多人写过了,想了想,还是说一下吧。 5.1 CL 程序 5.1.1 基本认识 简单的理解,CL 程序就是和RPG 相对应的,是控制语言(Control Language)。类型为CLP、CLLE 的源代码编译出来的程序,都属于CL 程序。 可能还是不够直观,这么说吧,我们在交互式命令行上输入的命令,用程序的方式来执 行,这个执行的程序,就是CL 程序。 学过UNIX 的会比较好懂,CL 程序有点类似于SHELL,不过SHELL 是可以直接执行的,而且不用编译;CL 程序需要编译,而且要用CALL 的方式来执行。不过原理是接近的,都是在程序中直接调用命令行的语句。 所以说,CL 程序其实很好写,只要会输入命令,就可以写CL 程序了。在编辑CL 程 序时,也可以用“命令+ F4”的方式来写,不需要老老实实的整行输入。 CL 程序不像RPGLE 程序,在编写时,可以使用自由格式书写;一行的内容如果太长 要,在最末尾处用“+”表示换行 举个最简单的例子,比如说新建个名为FHS01CL 的CLP 源程序,代码如下: PGM WRKACTJOB ENDPGM 编译此程序,然后CALL 之,系统就会执行命令WRKACTJOB,查看当前的活动作业, 效果与在交互式命令行下输入WRKACTJOB 是一样的。 当我们输入F12,退出WRKACTJOB 时,系统就会继续向下执行,发现是ENDPGM, 表示程序结束了,于是判定执行完毕,退出至交互式画面。 5.1.2 CL 程序的常用语法及命令:

一、程序的开始与结束: PGM PARM(&A &B) /* 开始CL 程序*/ ENDPGM /* 结束CL 程序*/ CL 程序,和RPGLE 程序一样,也可以有程序的入口参数,而且程序的入口参数 都是可传递的(也就是输入的参数如果在程序中被修改过,那么原调用的程序中的相应参数也会进行变化。不过CL 的入口参数只能为字符型,或数字型的单个字段,不能象RPGLE 程序中那么多样化(字段、结构、数组、指针)。 如果CL 程序没有入口参数时,那么就可以不需要后面的PARM 语句,直接写成 PGM 即可。 写CL 程序时,不妨多使用F4,看看系统的帮助,这样就不用记那么多命令的参 数名。 二、变量及其定义 CL程序中的所有变量,都使用&做为前缀,这一点与RPGLE 程序不同。比如说 PGM PARM(&A &B) 就表示入口参数为A、B 这两个变量 在CL 程序中使用到的变量,都必须使用DCL 语句来定义: DCL VAR(&FLD01) TYPE(*CHAR) LEN(10) DCL VAR(&FLD02) TYPE(*DEC) LEN(10 2) 上述语句表示: 定义变量FLD01,10 位长的字符型变量 定义变量FLD02,10 长,其中2 位小数的数字型变量 除了字符、数字之外,CL 程序还可以定义逻辑变量(*LGL),逻辑变量允许的值只 能为’1’或’0’。不过通常有字符与数字也就够了。CL 程序的主要功能在于进行命令处理,

IBM AS400教程(完整版)

AS/400教程 完整版 第一章AS/400系统概况

1.1 AS/400发展历史 1.1.1 AS/400发展历史 Figure 1-1. AS/400的发展历史 为了深入了解一个系统,必须熟悉它发展的历史和背景。多数的计算机系统是从原有的系统基础上发展起来的。AS/400的发展历史: ◇ 1969年6月发布System/3(Batch machine) ◇ 1975年1月发布System/32 (用于小型商务办公环境) ◇ 1977年4月发布System/34 ◇ 1978年10月发布System/38(第一代AS/400,商业上失败,技术上成功) ◇ 1983年5月发布System/36(商业上非常成功) ◇ 1988年6月发布AS/400 B型号(Application System/400,第二代AS/400) ◇ 1994年5月发布AS/400先进系列/服务器(Advanced System/400,第三代AS/400)◇ 1995年6月发布AS/400 Power PC 先进系列/服务器 ◇ 1997年8月发布AS/400e系列 ◇ 1999年2月发布AS/400 e 服务器170、7XX ◇ 1999年7月发布AS/400e Domino 专用服务器(莲花宝箱) ◇ 2000年10月发布iSeries 400,包括270、820、830、840及IBM莲花宝箱(DSD) 1.2 iSeries 400的特点 1.2.1 iSeries 400的特点

Figure 1-2. iSeries400 iSeries 400通过紧密集成硬件、软件、中间件和操作系统提供能够满足不同业务需求的高性能、可靠和易于使用特性。从e系列开始,在电子商务大舞台上开始扮演更为重要的角色。它可以提供扩展业务确保电子商务优势所需的技术和工具。它的突出特点有: ● 卓越的性能,不断获得各种荣誉和认可,全面实现64位处理,先进的体系结构,最领先的SOI芯片技术; ● 卓越的可靠性和可用性,系统可提供99.97%的可用性,使iSeries成为商业关键事务处理的首选服务器平台; ● 高度集成的系统环境,使用户不需要太多的系统管理员就能保证其应用平稳地运行; ● 严密的安全防范系统,荣获美国联邦政府定义的商业计算机最高安全性级别C2级认证,堪称世界上"最安全"的计算机系统。从来没有发现过病毒。 ● 开放标准兼容性,使用户把运行在不同平台上的业务系统和数据平滑地连接在一起; ● 简单易用,使用户(尤其是新用户)很快就能掌握它的系统管理和应用程序开发。 ● 允许在一台服务器上安装Linux、Java、Windows2000和Domino等多种应用。 ● 在系统中可以配备16台PC服务器Netfinity,可以运行多种不同的操作系统,并公享主机系统的资源。 ● 是唯一一种能直接(固有)支持多种不同文件结构,如PC文件、Unix文件、Netware 文件、Domino文件、ASCII文件、EDBCID文件的系统。 1.3 AS/400先进的体系结构 1.3.1 TIMI结构

相关主题
文本预览
相关文档 最新文档