yeafee@夜飛郎

          it's usually better to solve problems with simplicity and finesse rather than muscle.

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            33 隨筆 :: 3 文章 :: 2 評論 :: 0 Trackbacks

          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 位; 邏輯型為“ 0 或“ 1 ,表示假或真。

          #CL 變量的缺省初值為:字符型為空,數(shù)值型為 0 ,邏輯型為“ 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 變量。

          ?

          5 .4 .3 程序間的通訊

          程序間的通訊是指不同程序之間數(shù)據(jù)或參數(shù)的傳遞和交流。這種通訊可以出現(xiàn)在不同種類的程序中。如: RPG C 語言,也可以出現(xiàn)在不同機(jī)器上,如: PC AS/400 。針對 OS/400 而言,通常程序間的通訊具有三種方式:

          * CALL RETURN 命令

          * 數(shù)據(jù)隊(duì)列通訊

          * 數(shù)據(jù)域通訊

          ?

          5.4.3 .1 CALL 命令的使用

          調(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 長度壓縮格式傳送。

          ?

          5.4.3 .2 數(shù)據(jù)隊(duì)列的程序通訊

          數(shù)據(jù)隊(duì)列( *DTAQ )是系統(tǒng)目標(biāo)中的一種類型,當(dāng)建立了這種目標(biāo)后,一個程序可以發(fā)送數(shù)據(jù)給它,另一個程序再從中接收數(shù)據(jù),從而達(dá)到程序之間的數(shù)據(jù)通訊。

          ?

          5.4.3 .3 數(shù)據(jù)隊(duì)列的優(yōu)點(diǎn)

          ?

          * 數(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ì)列

          ?

          5.4.3 .4 數(shù)據(jù)隊(duì)列的發(fā)送

          ?

          需要將數(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ù)可以自選,如果說明了一個,則必須說明另一個。

          ?

          5.4.3 .5 數(shù)據(jù)隊(duì)列的接收

          ?

          需要從數(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 必須同時說明。

          ?

          5.4.3 .6 數(shù)據(jù)隊(duì)列的清除

          ?

          需要從數(shù)據(jù)隊(duì)列中清除數(shù)據(jù),只要在程序中調(diào)用 QCLRDTAQ CL 程序中,調(diào)用的格式如下:

          CALL PGM QCLRDTAQ PARMM &QNAME &LIB

          ?

          5.4.3 .7 數(shù)據(jù)隊(duì)列的檢索

          ?

          需要檢索一個數(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ì)列名字,后十個字符是庫名。

          ?

          5.4.3 .8 數(shù)據(jù)域的程序通訊

          ?

          數(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ù)域

          ?

          5 .4 .4 測試功能

          5.4.4 .1 CL 程序的編譯

          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)生,以下程序序言將被建立:

          * 所有者名

          * 源程序的最終修改日期

          * 源程序的重建日期和時間

          * 最初編譯時的許可程序級

          ?

          5.4.4 .2 程序的編譯

          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

          posted on 2007-08-02 15:18 @yeafee 閱讀(2889) 評論(0)  編輯  收藏 所屬分類: AS/400
          主站蜘蛛池模板: 和政县| 碌曲县| 花莲市| 桦川县| 阿克| 永春县| 苍溪县| 滨海县| 榆树市| 庆元县| 巨鹿县| 霍城县| 康定县| 南城县| 绥中县| 得荣县| 平阳县| 岐山县| 克山县| 施甸县| 保德县| 石城县| 赤水市| 甘德县| 方正县| 平果县| 科尔| 锦州市| 阜南县| 沐川县| 宜君县| 昌宁县| 玉屏| 四平市| 公主岭市| 宜阳县| 肥西县| 策勒县| 连州市| 周宁县| 浮山县|