5
.
4
.
1
概
述
提要:
* CL
命令的作用
* CL
命令的分類
*
系統(tǒng)菜單
?
5
.
4
.
1 .1 CL
命令的作用
?
CL
(
Control Language)
控制語言是用戶與操作系統(tǒng)之間的主要接口。可以說用戶管理和操作
AS/400
系統(tǒng),均可以通過
CL
實(shí)現(xiàn)。用戶在不同的工作站或客戶端可以同時使用
CL
,其輸入方式有五種
:
*
在菜單畫面選擇
*
在
work with
菜單中,
option
選項(xiàng)
*
在
CL
程序中執(zhí)行
*
遠(yuǎn)程調(diào)用
?
前三種輸入方式給用戶提供一種交互式的操作方法,只執(zhí)行一條命令;第四種方式給用戶提供一種操作
,
并包含邏輯控制
,
可以完整地實(shí)現(xiàn)一項(xiàng)功能;第五種方式給用戶提供在客戶端直接執(zhí)行主機(jī)操作的接口。
由于 CL 使用了統(tǒng)一的命名方法,提供 prompt 式的提示功能和具體到域值的在線幫助,以及自動生成命令參數(shù)的缺省值 , 再加上有效性檢查,從而使得 CL 的使用變得非常簡單、方便和靈活。
5
.
4
.
1 .2 CL
命令的參數(shù)
CL
使用了一種很科學(xué),較為成功的命名方法。每條命令由命令名和一系列參數(shù)組成。命令名通常由動詞加上接受動詞的名詞定義為目標(biāo)
Ob ject
)組成,單詞通常縮寫為三個字母。
例如:
CL
命令
?????????????????
命令名
Send Message ?????????????SNDMSG
Copy File ?????????????????CPYF
Work with Device Desripyions ?WRKDEVD
CL
的參數(shù)由關(guān)鍵字和參數(shù)值組成,關(guān)鍵字通常和命令一樣縮寫,它用于說明參數(shù)的作用,在命令輸入屏,按
F11
鍵,即可看到關(guān)鍵字。在命令行輸入命令時,如果參數(shù)是按照固定的順序輸入,則可以省略關(guān)鍵字。
例如
: SNDMSG MSG (HOLLEO) TOUSR (LENG)?
命令名
關(guān)鍵字
參數(shù)值
大多數(shù)
CL
都是
針對目標(biāo)而言,目標(biāo)是一個占據(jù)了一定存儲空間的實(shí)體,它包括自身屬性及其數(shù)據(jù)特征的描述,系統(tǒng)可以對它進(jìn)行操作。目標(biāo)的屬性包括名字、類型、長度、建立日期及其它屬性。不同目標(biāo)具有不同的屬性描述,大部分屬性是可以修改的,而不需要重新建立。目標(biāo)的數(shù)據(jù)值是儲存于目標(biāo)中的信息集合,例如
:
程序的值是組成程序的執(zhí)行碼,文件的值是組成文件的記錄。
目標(biāo)的類型很多,常用的幾種包括:
* LIB
庫
* FILE
文件
* MSGF
信息文件
* PGM
程序
* CMD
命令
* JOBQ
作業(yè)隊(duì)列
* DTAQ
數(shù)據(jù)隊(duì)列
* MSGQ
信息隊(duì)列
* OUTQ
輸出隊(duì)列
* DTAARA
數(shù)據(jù)域
* JRN
日志
* JRNRCV
日志接受器
* USRPRF
用戶簡要表
* SBSD
子系統(tǒng)描述
* JOBD
作業(yè)描述
* LIND
線路描述
* CTLD
控制器描述
* DEVD
設(shè)備描述
一個具體目標(biāo)是由目標(biāo)名和目標(biāo)類型來唯一標(biāo)識的,不同的目標(biāo)類型可以使用同一個目標(biāo)名。目標(biāo)名由用戶指定,目標(biāo)類型由生成它的命令決定。不同類型的目標(biāo)具有不同的操作。例如:
CALL
命令只針對
*PGM
目標(biāo)進(jìn)行操作。
關(guān)于目標(biāo)的操作,系統(tǒng)也進(jìn)行了統(tǒng)一的規(guī)范,常用的幾種包括:
* WRK
工作
* CRT
建立
* ADD
增加
* CHG
改變
* DLT
刪除
* DSP
顯示
* EDT
編輯
* CPY
拷貝
* MOV
移動
* RNM
變名
* SAV
備份
* RST
恢復(fù)
* RTV
獲取
* GRT
授權(quán)
* DMP
轉(zhuǎn)儲
5
.
4
.
2 ?CL
編程
5
.
4
.
2. 1 CL
程序的作用
CL
程序是由
CL
命令組成,這些命令被編譯成可供隨時調(diào)用的程序。使用
CL
程序的優(yōu)點(diǎn)包括:
* CL
程序比單獨(dú)輸入和運(yùn)行命令快,因?yàn)槊畋痪幾g成能夠立即運(yùn)行的形式。
*
有些功能需要多條
CL
命令一起完成。
*
參數(shù)可以傳遞給
CL
程序,
CL
程序內(nèi)部也接收變量的定義,
以適應(yīng)特殊需要的程序操作。
* CL
程序能夠像其它高級語言程序一樣被測試和監(jiān)控。
CL
程序可以應(yīng)用到許多方面,包括:
*
通過
CL
程序完成單獨(dú)輸入
CL
命令所不能完成的功能,例如,人工或者定時提交批作用完成一項(xiàng)工作,如啟動子系統(tǒng),
進(jìn)行文件備份,整頓系統(tǒng)資源。
*
給交互式或批處理的應(yīng)用程序提供一個接口,使得在應(yīng)用程序中直接進(jìn)行系統(tǒng)操作或者獲取系統(tǒng)參數(shù)。
*
在網(wǎng)絡(luò)通信方面,
CL
程序往往承擔(dān)應(yīng)用主控程序的角色。
5
.
4
.
2. 2 CL
程序的結(jié)構(gòu)
CL
程序是借助于
ADT
工具中的
SEU
輸入的,在輸入過程中,鍵入一條命令并按
F4
鍵,就會顯示出這條命令的提示畫面,方便用戶輸入相應(yīng)的參數(shù)值。
CL
源程序主要分為以下幾個部分:
*
程序的開始和結(jié)束:
PGM PARM
(
&A &B
)
開始
CL
程序
END PGM
結(jié)束程序
*
變量定義:
DCL
定義變量
DCLF
定義文件
* CL
處理命令:
CHGVAR
變量賦值
MONMSG
監(jiān)控錯誤信息
SNDPGMMSG
傳送程序信息
RTVJOBA
獲取作業(yè)屬性值
*
邏輯控制命令:
IF THEN ELSE
DO ENDDO
GOTO
*
內(nèi)部函數(shù):
????% SST
取子串
* CAT
連接字符
*
程序控制命令:
CALL
調(diào)用子程序
RETURN
返回調(diào)用程序
5
.
4
.
2. 3 ?CL
程序的命令
CL
程序中僅可包含
CL
命令,由系統(tǒng)提供的大多數(shù)
CL
命令可用于
CL
程序,而有些
CL
命令是專門用在
CL
程序中的。
下面是一張用在
CL
程序中的部分命令清單,其中帶有星號的表示該命令僅能用于
CL
程序內(nèi)部。
?
?
變量的使用
?
*
變量說明,使用
DCL
命令來定義變量及其屬性、長度和初值。標(biāo)準(zhǔn)格式如下:
* CHAR
DCL VAR (
變量名
) TYPE * DEC LEN (
長度
) VALUE(
初值
)
* LGL
使用
DCL
命令時,必須遵循的規(guī)則如下:
#CL
變量名必須以
&
開始,后跟字符不多于
10
個
,
&
后的第一個字符必須是字母,其余的可以是字母或數(shù)字。
#CL
變量值必須是:字符型最長為
9999
個
字符;數(shù)值型為壓縮十進(jìn)制數(shù),最長為
15
位,其中小數(shù)位最長為
9
位;
邏輯型為“
#CL
變量的缺省初值為:字符型為空,數(shù)值型為
0
,邏輯型為“
#
對于字符型和數(shù)值型,如果指定了初值而未指定長度,則缺省長度為初值長度。
*
變量值中小寫字符的限制
用作變量的保留值必須用大寫字母表示,特別是當(dāng)它們用引號括起來的時候。例如:
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE('*LIBL')
DLTPGM &LIB/MY PROG
注意:如果
VALUE
參數(shù)不使用引號,則小寫是正確的。因?yàn)槭褂?/span>
SEU
編輯會自動轉(zhuǎn)換成大寫。
*
變量賦值,使用
CHGVAR
命令給變量賦值,其值可改變成:
#
常量:
CHGVAR VAR
(
&A
)
VALUE
(
0
)
#
變量:
CHGVAR VAR
(
&A
)
VALUE
(
&B
)
#
計(jì)算量:
CHGVAR VAR
(
&A
)
VALUE
(
&A+1
)
#
函數(shù)量:
CHGVAR VAR
(
&A
)
VALUE(%SST(&B 1 5))
CHGVAR VAR(%SST(&A 1 5)) VALUE(&B)
賦值時應(yīng)注意以下幾點(diǎn):
#
對邏輯變量,被改變的值必須是一個邏輯值。
#
對數(shù)值變量,只能賦予十進(jìn)制數(shù),或者數(shù)字字符變量(包括小數(shù)點(diǎn)和正負(fù)號)。
#
對字符變量,既可接受字符,也可接受十進(jìn)制數(shù)。賦十進(jìn)制數(shù)時,該字符變量的值是右對齊,前導(dǎo)補(bǔ)零,負(fù)號放在最左邊。
* CL
程序中注解的書寫,在命令的頭尾使用一對符號:
/*
和
*/
。
如果一行寫不下一條命令,使用
+
。
?
5
.
4
.
2. 4 ?CL
程序內(nèi)部的邏輯控制
?
*
條件轉(zhuǎn)移命令:
?
IF COND
(條件)
THEN
(一條命令)
ELSE CMD
(一條命令)
或者
IF COND
(條件)
THEN
(
DO
)
ENDDO
ELSE CMD
(
DO
)
.
ENDDO
*
無條件轉(zhuǎn)移命令:
GOTO LABEL
*
操作符:
邏輯的
*AND *OR *NOT
算術(shù)的
+ - * /
字符的
*CAT *TCAT
關(guān)系的
*EQ *GT *LT *GE *LE *NE
*
監(jiān)視信息命令:
MONMSG
MONMSG MSGID
(信息標(biāo)識
1
…
信息標(biāo)識
50
)
+ EXEC
(
CL
命令)
系統(tǒng)對于
CL
命令執(zhí)行錯誤所送出的信息都具有唯一的標(biāo)識符,如果不進(jìn)行監(jiān)視,則系統(tǒng)會終斷程序,自動顯示錯誤信息。
5
.
4
.
2. 5
系統(tǒng)資源的獲取
*
日期格式轉(zhuǎn)換命令:
CVTDAT
CVTDAT DATE
(被轉(zhuǎn)換日期)
TOVAR
(轉(zhuǎn)換后日期)
FROMFMT
(原格式)
TOFMT
(新格式)
TOSEP
(新分隔符)
其中:轉(zhuǎn)換后日期的長度至少是:
#
對儒略日期(如
YMD
,
DMY
或
JUL
格式),不使用分隔符為
5
個
字符,使用分隔符為
6
個
字符。
#
對非儒略日期,不使用分隔符為
6
個
字符,使用分隔符為
8
個
字符。
日期格式和分隔符可以通過按
F4
鍵選擇。
*
檢索系統(tǒng)值命令:
RTVSYSVAL
RTVSYSVAL SYSVAL
(系統(tǒng)值名)
RTNVAR
(
CL
變量名)
其中:系統(tǒng)值名可以通過按
F4
鍵選擇,如:系統(tǒng)當(dāng)前日期的系統(tǒng)值是
QDATE
。變量名必須和系統(tǒng)值的類型匹配,對字符型和邏輯型系統(tǒng)值而言,變量名的長度必須相符,對數(shù)字型,則長度不小于系統(tǒng)值長度。
*
檢索配置源命令:
RTVCFGSRC
用于將現(xiàn)有配置的描述存放到源文件成員中
*
配置狀態(tài)檢索命令:
RTVCFGSTS
用于獲取各類配置描述的現(xiàn)行狀態(tài),放入
CL
變量。
*
檢索網(wǎng)絡(luò)屬性的命令:
RTVNETA
用于獲取系統(tǒng)的網(wǎng)絡(luò)屬性,放入相應(yīng)的
CL
變量。如:系統(tǒng)名
SYSNAME
,本地網(wǎng)絡(luò)標(biāo)識
LCLNETID
。
*
檢索作業(yè)屬性命令:
RTVJOBA
用于獲取當(dāng)前運(yùn)行作業(yè)的屬性,放入相應(yīng)的
CL
變量。如:作業(yè)名
JOB
,用戶名
USER
。
*
檢索目標(biāo)描述命令:
RTVOBJD
用于獲取指定目標(biāo)的描述屬性,放入相應(yīng)的
CL
變量。
*
檢索用戶檔案命令:
RTVUSRPRF
用于獲取指定用戶的檔案資料,放入相應(yīng)的
CL
變量。
程序間的通訊是指不同程序之間數(shù)據(jù)或參數(shù)的傳遞和交流。這種通訊可以出現(xiàn)在不同種類的程序中。如:
RPG
與
C
語言,也可以出現(xiàn)在不同機(jī)器上,如:
PC
與
AS/400
。針對
OS/400
而言,通常程序間的通訊具有三種方式:
* CALL
、
RETURN
命令
*
數(shù)據(jù)隊(duì)列通訊
*
數(shù)據(jù)域通訊
調(diào)用程序:
CALL PGM
(
PGMA
)
PARM
(
&A &B
)
被調(diào)用程序:
PGM PARM
(
&C &D
)
有關(guān)
CALL
命令使用的幾點(diǎn)說明:
*
參數(shù)值可以是字符常量、數(shù)值常量、邏輯常量或
CL
常量,最多可達(dá)
40
個
。
*
參數(shù)值以
CALL
命令中出現(xiàn)的順序傳送,這必須與被調(diào)用程序的參數(shù)順序相匹配,變量名不一定相同。
*
被調(diào)程序中的接收參數(shù)必須說明,但接收值不受變量說明中初值的影響。
*
接收參數(shù)值的改變會反映到調(diào)用程序中,但常量傳送不會改變。
*
字符常量通常以
32
個
字節(jié)傳送,數(shù)字常量以
15.5
長度壓縮格式傳送。
數(shù)據(jù)隊(duì)列(
*DTAQ
)是系統(tǒng)目標(biāo)中的一種類型,當(dāng)建立了這種目標(biāo)后,一個程序可以發(fā)送數(shù)據(jù)給它,另一個程序再從中接收數(shù)據(jù),從而達(dá)到程序之間的數(shù)據(jù)通訊。
*
數(shù)據(jù)隊(duì)列是兩個作業(yè)之間進(jìn)行異步通訊的最快方法。相對數(shù)據(jù)庫文件、消息隊(duì)列或數(shù)據(jù)域而言,它需要較少的額外開銷。
*
多個作業(yè)可以向相同的數(shù)據(jù)隊(duì)列送數(shù)據(jù)和取數(shù)據(jù),而數(shù)據(jù)隊(duì)列的先進(jìn)先出、后進(jìn)先出或關(guān)鍵字順序排列屬性,能夠保證數(shù)據(jù)送取的正確性。
*
在任何高級語言程序中,通過調(diào)用系統(tǒng)提供的程序,就可以對數(shù)據(jù)隊(duì)列進(jìn)行操作,而且操作方法靈活方便。數(shù)據(jù)隊(duì)列的操作和使用包括兩類:第一類使用
CL
命令;第二類調(diào)用系統(tǒng)程序。
CL
命令:
CRTDTAQ
建立數(shù)據(jù)隊(duì)列
DLTDTAQ
刪除數(shù)據(jù)隊(duì)列
WRKDTAQ
工作數(shù)據(jù)隊(duì)列
系統(tǒng)程序:
QSNDDTAQ
發(fā)送數(shù)據(jù)隊(duì)列
QRCVDTAQ
接收數(shù)據(jù)隊(duì)列
QCLRDTAQ
清除數(shù)據(jù)隊(duì)列
QMHQRDQD
檢索數(shù)據(jù)隊(duì)列
需要將數(shù)據(jù)發(fā)送給數(shù)據(jù)隊(duì)列,只要在程序中調(diào)用
QSNDDTAQ
。在
CL
程序中,調(diào)用的格式如下:
CALL PGM(QSNDDTAQ) PARM(&QNAME &LIB &FLDLEN &FIELD &KEYLEN &KEY)
&QNAME
:
是長度為
10
的字符型,它命名了數(shù)據(jù)隊(duì)列,如:
IN_Q
。
&LIB
:
是長度為
10
的字符型,它命名了數(shù)據(jù)隊(duì)列所在的庫,如:
*LIBL
。
&FLDLEN
:
是長度為
5
的數(shù)字型,它規(guī)定了發(fā)送給數(shù)據(jù)隊(duì)列的字符數(shù),如:
100
。
&FIELD
:
是長度為
&FLDLEN
的字符型,它包含了具體發(fā)送給數(shù)據(jù)隊(duì)列的數(shù)據(jù)。
&KEYLEN
:
是長度為
3
的數(shù)字型
,
它說明了傳送給數(shù)據(jù)隊(duì)列的關(guān)鍵字長度,如:
6
。
&KEY
:
是長度為
&KEYLEN
的字符型,它包含了傳送給數(shù)據(jù)隊(duì)列的關(guān)鍵字?jǐn)?shù)據(jù)。
注:后兩個參數(shù)可以自選,如果說明了一個,則必須說明另一個。
需要從數(shù)據(jù)隊(duì)列中接收數(shù)據(jù),只要在程序中調(diào)用
QRCVDTAQ
。在
CL
程序中,調(diào)用的格式如下:
CALL PGM(QRCVDTAQ) PARM(&QNAME &LIB &FLDLEN &FIELD &WAIT &ORDER KEYLEN &KEY &SNDRLEN &SNDR)
&QNAME
:
是長度為
10
的字符型,它命名了數(shù)據(jù)隊(duì)列。如:
OUT_Q
。
&LIB
:
是長度為
10
的字符型,它命名了數(shù)據(jù)隊(duì)列所在的庫。如:
*LIBL
。
&FLDLEN
:
是長度為
5
的數(shù)字型,它規(guī)定了發(fā)送給數(shù)據(jù)隊(duì)列的字符數(shù)。
&FIELD
:
是長度為
&FLDLEN
的字符型,它包含了從數(shù)據(jù)隊(duì)列中接收到的具體數(shù)據(jù)。
&WAIT
:
是長度為
5
的數(shù)字型,它說明了等待接收數(shù)據(jù)的時間。負(fù)數(shù)表示無限制的等待;零表示不等待;
正數(shù)示要等待的秒數(shù),最大值是
9999
。這個參數(shù)只有在數(shù)據(jù)隊(duì)列中無滿足條件的數(shù)據(jù)時
,
才起作
用。
&ORDER
:
是長度為
2
的字符型,它說明了按關(guān)鍵字接收數(shù)據(jù)的條件。可用的字符值是:
GT
、
LT
、
EQ
、
GE
、
LE
。
&KEYLEN
:
是長度為
3
的數(shù)字型
,
它說明了接收數(shù)據(jù)隊(duì)列的關(guān)鍵字長度。
&KEY
:
是長度為
&KEYLEN
的字符型,它標(biāo)識了用于從數(shù)據(jù)隊(duì)列中接收數(shù)據(jù)的關(guān)鍵字變量。
&SNDRLEN
:是長度為
3
的數(shù)字型,它規(guī)定了發(fā)送者標(biāo)識的長度。
&SNDR
:
是長度為
&SNDRLEN
的字符型,它包含了發(fā)送者標(biāo)識的數(shù)據(jù)。
注:后三個參數(shù)可以任選,但是
&ORDER
、
&KEYLEN
和
&KEY
必須同時說明。
需要從數(shù)據(jù)隊(duì)列中清除數(shù)據(jù),只要在程序中調(diào)用
QCLRDTAQ
在
CL
程序中,調(diào)用的格式如下:
CALL PGM
(
QCLRDTAQ
)
PARMM
(
&QNAME &LIB
)
需要檢索一個數(shù)據(jù)隊(duì)列的描述項(xiàng),只要在程序中調(diào)用
QMHQRDQD
。在
CL
程序中,調(diào)用的格式如下:
CALL PGM
(
QMHQRDQD
)
PARM
(
&RCVR &RCVRLEN &FORMAT &DQNAME
)
&RCVR
:
是長度為
&RCVRLEN
的字符型,它標(biāo)識了含有數(shù)據(jù)隊(duì)列性的變量。
&RCVRLEN
:
是長度為
4
的數(shù)字型,它說明了
&RCVR
長度。
&FORMAT
:
是長度為
8
的字符型,它定義了接收模板的格式。
&DQNAME
:
是長度為
20
的字符型,它標(biāo)識了數(shù)據(jù)隊(duì)列和所在庫,前十個字符是隊(duì)列名字,后十個字符是庫名。
數(shù)據(jù)域(
*DTAARA
)是系統(tǒng)目標(biāo)中的一種類型。當(dāng)建立了這種目標(biāo)后,可以用來存入數(shù)據(jù),以便任何程序進(jìn)行讀取和修改。數(shù)據(jù)域的典型用途如下:
*
提供用于幾個程序中的常數(shù)字段,易于共享和修改。如:標(biāo)題、說明等。
*
在一個作業(yè)中提供一個傳遞信息的區(qū)域。
*
在一個作業(yè)中提供一個字段作為控制參數(shù),以便容易地得到修改。
數(shù)據(jù)域的
CL
命令包括:
CRTDTAARA
建立數(shù)據(jù)域,長度不超過
2000
CHGDTAARA
改變數(shù)據(jù)域,改變時數(shù)據(jù)域被鎖定
DSPDTAARA
顯示數(shù)據(jù)域,可以以十六進(jìn)制方式顯示
RTVDTAARA
檢索數(shù)據(jù)域,檢索值需要存入
CL
變量
DLTDTAARA
刪除數(shù)據(jù)域
WRKDTAARA
工作數(shù)據(jù)域
CL
源程序必須經(jīng)過編譯,生成
*PGM
方可運(yùn)行。建立程序的方法有兩種:一是,使用
CL
命令
CRTCLPGM
,二是,使用
PDM
菜單選項(xiàng)
14
,按
F4
鍵即可對命令參數(shù)進(jìn)行選擇。
系統(tǒng)編譯的情況全部記錄在編譯清單中,通過
WRKSPLF
即可看到。編譯過程中的錯誤被列在相應(yīng)命令后面,以及文件的最后,方便用戶查找。下列類型的錯誤將停止程序的建立:
*
值錯
*
句法錯
*
命令內(nèi)部與參數(shù)間不符
*
有效性檢查有錯
CL
程序可以通過反編譯命令
RTVCLSRC
,重新建立
CL
源程序。使用該命令時,必須滿足建立編譯程序的參數(shù)
ALWRTVSRC
為
*YES
。
當(dāng)源程序被反編后,任何注釋信息不再重新產(chǎn)生,以下程序序言將被建立:
*
所有者名
*
源程序的最終修改日期
*
源程序的重建日期和時間
*
最初編譯時的許可程序級
CL
程序的測試
對于
CL
程序在編譯和運(yùn)行中的錯誤,系統(tǒng)提供以下幾種測試功能:
*
程序轉(zhuǎn)儲。
在
CL
源程序中輸入命令
DMPCLPGM
,運(yùn)行后通過
WRKSPLF
即可看到轉(zhuǎn)儲內(nèi)容。包括程序信息隊(duì)列的全部信息和全部變量的數(shù)值。如果程序運(yùn)行出錯,出現(xiàn)提示畫面時,輸入
D
也可進(jìn)行程序轉(zhuǎn)儲。
*
設(shè)置斷點(diǎn)。第一步,啟動測試環(huán)境,使用命令
STRDBG PGM
(
PGMA
);第二步,設(shè)置斷點(diǎn),使用命令
ADDBKP STMT 1500
)
PGMVAR( '&A' '&B');
第三步,運(yùn)行程序,顯示斷點(diǎn)信息;第四步,結(jié)束測試環(huán)境,使用命令
ENDDBG
。
*
設(shè)置跟蹤。跟蹤是記錄程序中語句執(zhí)行順序的過程。系統(tǒng)并不自動顯示跟蹤信息,而須使用命令
DSPTRCDTA
請求顯示跟蹤信息,信息包括語句執(zhí)行的順序和
ADDTRC
命令中指定的變量值。
例如:
Auto RGZPFM
STRCLPGM: PGM PARM(&LIBRARY)
DCL VAR(&LIBRARY) TYPE(*CHAR) LEN(10)
DCL VAR(&PERCENT) TYPE(*DEC) LEN(4 3)
DCLF FILE(QTEMP/WORKFILE) RCDFMT(QWHFDMBR)
DSPFD FILE(&LIBRARY/*ALL) TYPE(*MBR) +
OUTPUT(
*OUTFILE) OUTFILE(QTEMP/WORKFILE)
NEXT: RCVF RCDFMT(QWHFDMBR)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(ENDCLPGM))
IF COND(&MBFILA *EQ '*PHY') THEN(DO)
CHGVAR VAR(&PERCENT) VALUE(&MBNDTR / &MBNRCD)
MONMSG MSGID(MCH1211) EXEC(GOTO CMDLBL(NEXT))
IF COND(&PERCENT *GT .15) THEN(DO)
SBMJOB CMD(RGZPFM FILE(&MBLIB/&MBFILE) MBR(&MBNAME))
ENDDO
ENDDO
GOTO CMDLBL(NEXT)
ENDCLPGM: DLTF FILE(QTEMP/WORKFILE)
ENDPGM
5.4
.
5
常用
CL
命令
系統(tǒng)功能
|
命令
|
命令功能
|
修改過程控制
|
CALL
(Call) |
調(diào)用一個程序
|
CALLPRC
(Call Procedure) |
調(diào)用一個過程
|
|
RETURN
(Return) |
返回到引起程序或過程運(yùn)行的下一條命令
|
|
CL
過程界限
|
PGM
(program) (1) |
指出
CL
過程源碼的開始
|
ENDPGM
(End Program) (1) |
指出
CL
過程源碼的結(jié)束
|
|
CL
過程邏輯
|
IF
(If) (1) |
根據(jù)邏輯表達(dá)式的值執(zhí)行命令
|
ELSE
(Else) (1) |
對
IF
命令為假條件定義采取的行動
|
|
DO
(Do) (1) |
指出
DO
組的開始
|
|
ENDDO
(End Do) (1) |
指出
DO
組的結(jié)束
|
|
GOTO
(Go To) (1) |
轉(zhuǎn)移到另外的命令
|
|
CL
過程變量
|
CHGVAR
(Change Variable) (1) |
修改
CL
變量的值
|
DCL
(Declare) (1) |
說明一個變量
|
|
替換
|
CHGVAR
(Change Variable) (1) |
修改
CL
變量的值
|
CVTDAT
(Convert Date) (1) |
修改日期格式
|
|
數(shù)據(jù)區(qū)
|
CHGDTAARA
(Change Data Area) |
修改數(shù)據(jù)區(qū)
|
CRTDTAARA
(Create Data Area) |
生成一個數(shù)據(jù)區(qū)
|
|
DLTDTAARA
(Delete Data Area) |
刪除一個數(shù)據(jù)區(qū)
|
|
DSPDTAARA
(Display Data Area) |
顯示一個數(shù)據(jù)區(qū)
|
|
RTVDTAARA
(Retrieve Data Area) |
把數(shù)據(jù)區(qū)的內(nèi)容復(fù)制到一個
CL
變量中
|
|
文件
|
ENDRCV
(End Receive) (1)
|
取消由前面的
RCVF,SNDF
或
SNDRCVF
命令對一個顯示文件發(fā)出的輸入請求
. |
DCLF
(Declare File) (1) |
說明一個顯示文件或數(shù)據(jù)庫文件
|
|
RCVF
(Receive File) (1) |
從顯示文件和數(shù)據(jù)庫文件中讀記錄
|
|
RTVMBRD
(Retrieve Member Description) (1) |
取得數(shù)據(jù)庫文件成員的描述
|
|
SNDF
(Send File) (1) |
往顯示文件中寫記錄
|
|
SNDRCVF
(Send/Reveive File)(1) |
往顯示文件中寫記錄
,
在用戶回答后讀記錄
|
|
WAIT
(Wait) (1)
|
等待從顯示文件發(fā)出的
SNDF,RCVF
或
SNDRVF
命令接收文件
|
|
信息
|
MONMSG
(Monitor Message)(1) |
監(jiān)控送往程序隊(duì)列的逃逸
,
狀態(tài)和通知信息
|
RCVMSG
(Receive Message)(1) |
把信息從信息隊(duì)列復(fù)制到一個
CL
變量中
|
|
|
RMVMSG
(Remove Message)(1) |
從信息隊(duì)列取消信息
|
RTVMSG
(Retrieve Message)(1)
|
把預(yù)先定義的信息從信息文件復(fù)制到
CL
變量中
|
|
SNDPGMMSG
(
Send Program Message
)
(1) |
往信息
隊(duì)列發(fā)送程序信息
|
|
SNDRPY
(
Send Reply
)
(1) |
給查詢信息的發(fā)送者發(fā)送回答信息
|
|
SNDUSRMSG
(
Send User Message
)
(1)
|
給顯示工作站或系統(tǒng)操作員發(fā)送消息或查詢信息
|
|
混雜命令
|
CHKOBJ
(Check Object) |
檢查目標(biāo)是否存在及使用目標(biāo)必須有的權(quán)限
|
PRTCMDUSG
(
Print Command Usage
)
|
產(chǎn)生一個用在某組
CL
過程中的一組命令中的交叉引用表
|
|
RTVCFGSRC
(Retrieve Configuration Source)
|
對生成的已存在的配置目標(biāo)建立一個
CL
命令源碼且把它放在源文件成員中
|
|
RTVCFGSTS
(RetrieveConfiguration Status)(1)
|
從三個配置目標(biāo)
(
線路,控制器和設(shè)備
)
中取得配置狀態(tài)
|
|
RTVJOBA
(
Retrieve Job Attributes
)
(1)
|
取得一個或多個作業(yè)屬性的值且把它們放到
CL
變量中
|
|
RTVSYSVAL
(
Retrieve System Value
)
(1) |
取得系統(tǒng)值并且把它放到一個
CL
變量中
|
|
RTVUSRPRF
(
Retrieve User Profile
)
(1) |
取得用戶文件屬性并把它放到
CL
變量中
|
|
程序生成命令
|
CRTCLMOD
(
Create CL Module
)
|
生成一個
CL
模塊
|
DLTMOD
?
(
Delete Module
)
|
刪除一個模塊
|
|
DLTPGM
??
(
Delete Program
)
|
刪除一個程序
|
|
CRTBNDCL
(Create Bound Control Language Program) |
生成一個聯(lián)編的
CL
程序
|
|
CRTPGM
(
Create Program
)
|
生成一個程序
|
|
CRTSRVPGM
(
Create Service Program
)
|
生成一個服務(wù)程序
|
(1)
表示這些命令僅能用在
CL
過程中。
有了以上基礎(chǔ),大家可以參考下面文章作第一個CL程序了.
http://www.texas400.com/tutpdm.html