yeafee@夜飛郎

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

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            33 隨筆 :: 3 文章 :: 2 評(píng)論 :: 0 Trackbacks
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          公告

          感恩!!!

          常用鏈接

          留言簿(2)

          隨筆分類(29)

          隨筆檔案(31)

          文章分類(3)

          文章檔案(3)

          相冊(cè)

          收藏夾(7)

          My Links

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          AS/400? CL (Control Language) 控制語(yǔ)言是用戶與操作系統(tǒng)之間的主要接口。

          AS/400? CL控制語(yǔ)言基礎(chǔ)

          ◇課程大綱:
          l?第一章? 概述
          l?第二章? CL 編程
          l?第三章? 程序間的通訊
          l?第四章? 測(cè)試功能

          ◆第一章? 概?? 述
          提要:
          ?*?? CL 命令的作用
          ?*?? CL 命令的分類
          ?*?? 系統(tǒng)菜單

          1.1 CL 命令的作用

          ???? CL (Control Language) 控制語(yǔ)言是用戶與操作系統(tǒng)之間的主要接口??梢哉f(shuō)用戶管理和操作 AS/400 系統(tǒng),均可以通過(guò) CL實(shí)現(xiàn)。用戶在不同的工作站或客戶端可以同時(shí)使用 CL ,其輸入方式有五種:

          ?*? 在命令行輸入
          ?*? 在菜單畫面選擇
          ?*? 在 work with 菜單中,option 選項(xiàng)
          ?*? 在 CL 程序中執(zhí)行
          ?*? 遠(yuǎn)程調(diào)用
          ?????????????????????????????????????????????????
          ??? 前三種輸入方式給用戶提供一種交互式的操作方法,只執(zhí)行一條命令;第四種方式給用戶提供一種操作,并包含邏輯控制,可以完整地實(shí)現(xiàn)一項(xiàng)功能;第五種方式給用戶提供在客戶端直接執(zhí)行主機(jī)操作的接口。

          ??? 由于 CL 使用了統(tǒng)一的命名方法,提供 prompt 式的提示功能和具體到域值的在線幫助,以及自動(dòng)生成命令參數(shù)的缺省值, 再加上有效性檢查,從而使得 CL 的使用變得非常簡(jiǎn)單、方便和靈活。

          1.2 CL 命令的參數(shù)

          ???? CL 使用了一種很科學(xué),較為成功的命名方法。每條命令由命令名和一系列參數(shù)組成。命令名通常由動(dòng)詞加上接受動(dòng)詞的名詞(定義為目標(biāo)Object)組成,單詞通??s寫為三個(gè)字母。????
          例如:????????????????
          ???????? CL 命令?????????????????? 命令名
          ??????? Send Message?????????????? SNDMSG
          ??????? Copy File?????????????????? CPYF
          ??????? Work with Device Desripyions? WRKDEVD
          ?????????
          ???? CL 的參數(shù)由關(guān)鍵字和參數(shù)值組成,關(guān)鍵字通常和命令一樣縮寫,它用于說(shuō)明參數(shù)的作用,在命令輸入屏,按 F11 鍵,即可看到關(guān)鍵字。在命令行輸入命令時(shí),如果參數(shù)是按照固定的順序輸入,則可以省略關(guān)鍵字。????
          例如:
          ????? SNDMSG? MSG (HOLLEO)? TOUSR (LENG)
          ?????? 命令名?? 關(guān)鍵字 參數(shù)值
          ????????
          ??? 大多數(shù) CL 都是 針對(duì)目標(biāo)而言,目標(biāo)是一個(gè)占據(jù)了一定存儲(chǔ)空間的實(shí)體,它包括自身屬性及其數(shù)據(jù)特征的描述,系統(tǒng)可以對(duì)它進(jìn)行操作。目標(biāo)的屬性包括名字、類型、長(zhǎng)度、建立日期及其它屬性。不同目標(biāo)具有不同的屬性描述,大部分屬性是可以修改的,而不需要重新建立。目標(biāo)的數(shù)據(jù)值是儲(chǔ)存于目標(biāo)中的信息集合,例如: 程序的值是組成程序的執(zhí)行碼,文件的值是組成文件的記錄。

          目標(biāo)的類型很多,常用的幾種包括:
          ?* LIB????? 庫(kù)
          ?* FILE???? 文件
          ?* MSGF??? 信息文件
          ?* PGM???? 程序
          ?* CMD???? 命令
          ?* JOBQ??? 作業(yè)隊(duì)列
          ?* DTAQ??? 數(shù)據(jù)隊(duì)列
          ?* MSGQ??? 信息隊(duì)列
          ?* OUTQ??? 輸出隊(duì)列
          ?* DTAARA? 數(shù)據(jù)域
          ?* JRN????? 日志
          ?* JRNRCV? 日志接受器
          ?* USRPRF? 用戶簡(jiǎn)要表
          ?* SBSD??? 子系統(tǒng)描述
          ?* JOBD??? 作業(yè)描述?
          ?* LIND???? 線路描述
          ?* CTLD??? 控制器描述
          ?* DEVD??? 設(shè)備描述
          ?????????
          ???? 一個(gè)具體目標(biāo)是由目標(biāo)名和目標(biāo)類型來(lái)唯一標(biāo)識(shí)的,不同的目標(biāo)類型可以使用同一個(gè)目標(biāo)名。目標(biāo)名由用戶指定,目標(biāo)類型由生成它的命令決定。不同類型的目標(biāo)具有不同的操作。例如:CALL 命令只針對(duì) *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?? 移動(dòng)
          ?* RNM?? 變名
          ?* SAV??? 備份
          ?* RST??? 恢復(fù)
          ?* RTV??? 獲取
          ?* GRT??? 授權(quán)
          ?* DMP?? 轉(zhuǎn)儲(chǔ)

          ?◆第二章? CL 編程

          ?提要:
          ?*?? CL 程序的作用
          ?*?? CL 程序的結(jié)構(gòu)
          ?*?? CL 程序中的命令

          2.1 CL 程序的作用

          ??? CL 程序是由 CL 命令組成,這些命令被編譯成可供隨時(shí)調(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 程序能夠像其它高級(jí)語(yǔ)言程序一樣被測(cè)試和監(jiān)控。

          ??? CL 程序可以應(yīng)用到許多方面,包括:

          ?* 通過(guò) CL 程序完成單獨(dú)輸入 CL 命令所不能完成的功能,例如,人工或者定時(shí)提交批作用完成一項(xiàng)工作,如啟動(dòng)子系統(tǒng),進(jìn)行文件備份,整頓系統(tǒng)資源。
          ?* 給交互式或批處理的應(yīng)用程序提供一個(gè)接口,使得在應(yīng)用程序中直接進(jìn)行系統(tǒng)操作或者獲取系統(tǒng)參數(shù)。
          ?* 在網(wǎng)絡(luò)通信方面,CL 程序往往承擔(dān)應(yīng)用主控程序的角色。

          2.2 CL 程序的結(jié)構(gòu)

          ???? CL 程序是借助于 ADT 工具中的 SEU 輸入的,在輸入過(guò)程中,鍵入一條命令并按 F4 鍵,就會(huì)顯示出這條命令的提示畫面,方便用戶輸入相應(yīng)的參數(shù)值。CL 源程序主要分為以下幾個(gè)部分:


          ?* 程序的開始和結(jié)束:
          ?????????????????? PGM? PARM(&A &B) 開始 CL 程序
          ?????????????????? END? PGM? 結(jié)束程序
          ?* 變量定義:
          ?????????????????? DCL? 定義變量?
          ?????????????????? DCLF? 定義文件
          ?* CL 處理命令:
          ?????????????????? CHGVAR? 變量賦值
          ?????????????????? MONMSG? 監(jiān)控錯(cuò)誤信息
          ?????????????????? SNDPGMMSG? 傳送程序信息
          ?????????????????? RTVJOBA? 獲取作業(yè)屬性值
          ?* 邏輯控制命令:
          ?????????????????? IF? THEN? ELSE
          ?????????????????? DO? ENDDO
          ?????????????????? GOTO?
          ?* 內(nèi)部函數(shù):
          ?????????????????? % SST? 取子串
          ?????????????????? * CAT? 連接字符
          ?* 程序控制命令:
          ?????????????????? CALL? 調(diào)用子程序
          ?????????????????? RETURN? 返回調(diào)用程序


          2.3 CL 程序的命令

          ???? CL 程序中僅可包含 CL 命令,由系統(tǒng)提供的大多數(shù) CL 命令可用于 CL 程序,而有些 CL 命令是專門用在 CL 程序中的。下面是一張用在 CL 程序中的部分命令清單,其中帶有星號(hào)的表示該命令僅能用于 CL 程序內(nèi)部。

          2.3.1 變量的使用

          ?* 變量說(shuō)明,使用 DCL 命令來(lái)定義變量及其屬性、長(zhǎng)度和初值。標(biāo)準(zhǔn)格式如下:
          ?????????????????????????????? * CHAR
          ??? DCL? VAR (變量名) TYPE?? * DEC??? LEN (長(zhǎng)度)? VALUE(初值)
          ?????????????????????????????? * LGL????????
          ??????????
          ?? 使用 DCL 命令時(shí),必須遵循的規(guī)則如下:

          #CL 變量名必須以 & 開始,后跟字符不多于 10 個(gè),& 后的第一個(gè)字符必須是字母,其余的可以是字母或數(shù)字。
          ?
          #CL 變量值必須是:字符型最長(zhǎng)為 9999 個(gè)字符;數(shù)值型為壓縮十進(jìn)制數(shù),最長(zhǎng)為 15 位,其中小數(shù)位最長(zhǎng)為 9 位;邏輯型為“0”或“1”,表示假或真。
          ?
          #CL 變量的缺省初值為:字符型為空,數(shù)值型為 0,邏輯型為“0”。
          ?
          #對(duì)于字符型和數(shù)值型,如果指定了初值而未指定長(zhǎng)度,則缺省長(zhǎng)度為初值長(zhǎng)度。
          ?
          ?* 變量值中小寫字符的限制
          ?
          ?? 用作變量的保留值必須用大寫字母表示,特別是當(dāng)它們用引號(hào)括起來(lái)的時(shí)候。例如:

          ??? DCL? VAR(&LIB)? TYPE(*CHAR)? LEN(10)? VALUE('*LIBL')
          ??? DLTPGM? &LIB/MY PROG

          ??? 注意:如果 VALUE 參數(shù)不使用引號(hào),則小寫是正確的。因?yàn)槭褂?SEU 編輯會(huì)自動(dòng)轉(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)

          ?? 賦值時(shí)應(yīng)注意以下幾點(diǎn):

          #對(duì)邏輯變量,被改變的值必須是一個(gè)邏輯值。
          #對(duì)數(shù)值變量,只能賦予十進(jìn)制數(shù),或者數(shù)字字符變量(包括小數(shù)點(diǎn)和正負(fù)號(hào))。
          #對(duì)字符變量,既可接受字符,也可接受十進(jìn)制數(shù)。賦十進(jìn)制數(shù)時(shí),該字符變量的值是右對(duì)齊,前導(dǎo)補(bǔ)零,負(fù)號(hào)放在最左邊。
          ?
          ?* CL 程序中注解的書寫,在命令的頭尾使用一對(duì)符號(hào):/* 和*/。如果一行寫不下一條命令,使用 +。

          2.3.2 CL 程序內(nèi)部的邏輯控制

          ?* 條件轉(zhuǎn)移命令:

          IF? COND(條件) THEN(一條命令)?
          ELSE? CMD(一條命令)
          或者? IF? COND(條件) THEN(DO)
          ???????? .?????
          ????? ENDDO?
          ????? ELSE? CMD (DO)
          ???????? .
          ????? ENDDO

          ?* 無(wú)條件轉(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)識(shí) 1 … 信息標(biāo)識(shí) 50)+
          ????????????? EXEC(CL命令)

          ??? 系統(tǒng)對(duì)于CL命令執(zhí)行錯(cuò)誤所送出的信息都具有唯一的標(biāo)識(shí)符,如果不進(jìn)行監(jiān)視,則系統(tǒng)會(huì)終斷程序,自動(dòng)顯示錯(cuò)誤信息。

          2.3.3 系統(tǒng)資源的獲取

          ?* 日期格式轉(zhuǎn)換命令:CVTDAT

          ?? CVTDAT? DATE(被轉(zhuǎn)換日期) TOVAR(轉(zhuǎn)換后日期)+
          ???? FROMFMT(原格式) TOFMT(新格式) TOSEP(新分隔符)

          ?? 其中:轉(zhuǎn)換后日期的長(zhǎng)度至少是:

          #對(duì)儒略日期(如 YMD,DMY 或 JUL 格式),不使用分隔符為 5 個(gè)字符,使用分隔符為 6 個(gè)字符。
          #對(duì)非儒略日期,不使用分隔符為 6 個(gè)字符,使用分隔符為8 個(gè)字符。

          ?? 日期格式和分隔符可以通過(guò)按 F4 鍵選擇。

          ?* 檢索系統(tǒng)值命令:RTVSYSVAL
          ???????
          ??? RTVSYSVAL? SYSVAL(系統(tǒng)值名)RTNVAR(CL變量名)
          ????
          ??? 其中:系統(tǒng)值名可以通過(guò)按 F4 鍵選擇,如:系統(tǒng)當(dāng)前日期的系統(tǒng)值是 QDATE。變量名必須和系統(tǒng)值的類型匹配,對(duì)字符型和邏輯型系統(tǒng)值而言,變量名的長(zhǎng)度必須相符,對(duì)數(shù)字型,則長(zhǎng)度不小于系統(tǒng)值長(zhǎ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)識(shí) 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 語(yǔ)言,也可以出現(xiàn)在不同機(jī)器上,如:PC 與 AS/400。針對(duì)OS/400 而言,通常程序間的通訊具有三種方式:

          ?*? CALL、RETURN 命令
          ?*? 數(shù)據(jù)隊(duì)列通訊
          ?*? 數(shù)據(jù)域通訊

          3.1 CALL 命令的使用?

          ??? 調(diào)用程序:? CALL? PGM(PGMA) PARM(&A? &B)
          ??? 被調(diào)用程序:PGM? PARM(&C? &D)

          ??? 有關(guān) CALL 命令使用的幾點(diǎn)說(shuō)明:

          ?* 參數(shù)值可以是字符常量、數(shù)值常量、邏輯常量或 CL 常量,最多可達(dá) 40 個(gè)。
          ?* 參數(shù)值以 CALL 命令中出現(xiàn)的順序傳送,這必須與被調(diào)用程序的參數(shù)順序相匹配,變量名不一定相同。
          ?* 被調(diào)程序中的接收參數(shù)必須說(shuō)明,但接收值不受變量說(shuō)明中初值的影響。
          ?* 接收參數(shù)值的改變會(huì)反映到調(diào)用程序中,但常量傳送不會(huì)改變。
          ?* 字符常量通常以 32 個(gè)字節(jié)傳送,數(shù)字常量以 15.5 長(zhǎng)度壓縮格式傳送。
          3.2 數(shù)據(jù)隊(duì)列的程序通訊

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

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

          ?* 數(shù)據(jù)隊(duì)列是兩個(gè)作業(yè)之間進(jìn)行異步通訊的最快方法。相對(duì)數(shù)據(jù)庫(kù)文件、消息隊(duì)列或數(shù)據(jù)域而言,它需要較少的額外開銷。
          ?
          ?* 多個(gè)作業(yè)可以向相同的數(shù)據(jù)隊(duì)列送數(shù)據(jù)和取數(shù)據(jù),而數(shù)據(jù)隊(duì)列的先進(jìn)先出、后進(jìn)先出或關(guān)鍵字順序排列屬性,能夠保證數(shù)據(jù)送取的正確性。
          ?
          ?* 在任何高級(jí)語(yǔ)言程序中,通過(guò)調(diào)用系統(tǒng)提供的程序,就可以對(duì)數(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ì)列

          3.2.2 數(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:?? 是長(zhǎng)度為10的字符型,它命名了數(shù)據(jù)隊(duì)列,如:IN_Q。
          &LIB:? 是長(zhǎng)度為10的字符型,它命名了數(shù)據(jù)隊(duì)列所在的庫(kù),如:*LIBL。
          &FLDLEN: 是長(zhǎng)度為5的數(shù)字型,它規(guī)定了發(fā)送給數(shù)據(jù)隊(duì)列的字符數(shù),如:100。
          &FIELD: 是長(zhǎng)度為&FLDLEN的字符型,它包含了具體發(fā)送給數(shù)據(jù)隊(duì)列的數(shù)據(jù)。
          &KEYLEN: 是長(zhǎng)度為3的數(shù)字型,它說(shuō)明了傳送給數(shù)據(jù)隊(duì)列的關(guān)鍵字長(zhǎng)度,如:6。
          &KEY:? 是長(zhǎng)度為&KEYLEN的字符型,它包含了傳送給數(shù)據(jù)隊(duì)列的關(guān)鍵字?jǐn)?shù)據(jù)。

          ??? 注:后兩個(gè)參數(shù)可以自選,如果說(shuō)明了一個(gè),則必須說(shuō)明另一個(gè)。

          3.2.3 數(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:?? 是長(zhǎng)度為10的字符型,它命名了數(shù)據(jù)隊(duì)列。如:OUT_Q。
          &LIB:?? 是長(zhǎng)度為10的字符型,它命名了數(shù)據(jù)隊(duì)列所在的庫(kù)。如:*LIBL。
          &FLDLEN: 是長(zhǎng)度為5的數(shù)字型,它規(guī)定了發(fā)送給數(shù)據(jù)隊(duì)列的字符數(shù)。
          &FIELD:?? 是長(zhǎng)度為&FLDLEN的字符型,它包含了從數(shù)據(jù)隊(duì)列中接收到的具體數(shù)據(jù)。???
          &WAIT:?? 是長(zhǎng)度為5的數(shù)字型,它說(shuō)明了等待接收數(shù)據(jù)的時(shí)間。負(fù)數(shù)表示無(wú)限制的等待;零表示不等待;正數(shù)示要等待的秒數(shù),最大值是9999。這個(gè)參數(shù)只有在數(shù)據(jù)隊(duì)列中無(wú)滿足條件的數(shù)據(jù)時(shí), 才起作用。
          &ORDER:?? 是長(zhǎng)度為2的字符型,它說(shuō)明了按關(guān)鍵字接收數(shù)據(jù)的條件??捎玫淖址凳牵篏T、LT、EQ、GE、LE。
          &KEYLEN:? 是長(zhǎng)度為3的數(shù)字型,它說(shuō)明了接收數(shù)據(jù)隊(duì)列的關(guān)鍵字長(zhǎng)度。
          &KEY:??? 是長(zhǎng)度為&KEYLEN的字符型,它標(biāo)識(shí)了用于從數(shù)據(jù)隊(duì)列中接收數(shù)據(jù)的關(guān)鍵字變量。
          &SNDRLEN:是長(zhǎng)度為3的數(shù)字型,它規(guī)定了發(fā)送者標(biāo)識(shí)的長(zhǎng)度。
          &SNDR:? 是長(zhǎng)度為&SNDRLEN 的字符型,它包含了發(fā)送者標(biāo)識(shí)的數(shù)據(jù)。

          ??? 注:后三個(gè)參數(shù)可以任選,但是&ORDER、&KEYLEN和&KEY 必須同時(shí)說(shuō)明。

          3.2.4 數(shù)據(jù)隊(duì)列的清除

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

          3.2.5 數(shù)據(jù)隊(duì)列的檢索
          ????
          ?? 需要檢索一個(gè)數(shù)據(jù)隊(duì)列的描述項(xiàng),只要在程序中調(diào)用QMHQRDQD。在 CL 程序中,調(diào)用的格式如下:
          ?
          CALL? PGM(QMHQRDQD) PARM(&RCVR? &RCVRLEN?
          + &FORMAT? &DQNAME)

          &RCVR:?? 是長(zhǎng)度為&RCVRLEN的字符型,它標(biāo)識(shí)了含有數(shù)據(jù)隊(duì)列性的變量。
          &RCVRLEN: 是長(zhǎng)度為4的數(shù)字型,它說(shuō)明了&RCVR長(zhǎng)度。
          &FORMAT: 是長(zhǎng)度為8的字符型,它定義了接收模板的格式。
          &DQNAME: 是長(zhǎng)度為20的字符型,它標(biāo)識(shí)了數(shù)據(jù)隊(duì)列和所在庫(kù),前十個(gè)字符是隊(duì)列名字,后十個(gè)字符是庫(kù)名。
          3.3 數(shù)據(jù)域的程序通訊
          ?????
          ??? 數(shù)據(jù)域(*DTAARA)是系統(tǒng)目標(biāo)中的一種類型。當(dāng)建立了這種目標(biāo)后,可以用來(lái)存入數(shù)據(jù),以便任何程序進(jìn)行讀取和修改。數(shù)據(jù)域的典型用途如下:

          ?* 提供用于幾個(gè)程序中的常數(shù)字段,易于共享和修改。如:標(biāo)題、說(shuō)明等。
          ?* 在一個(gè)作業(yè)中提供一個(gè)傳遞信息的區(qū)域。
          ?* 在一個(gè)作業(yè)中提供一個(gè)字段作為控制參數(shù),以便容易地得到修改。

          ??? 數(shù)據(jù)域的 CL 命令包括:

          CRTDTAARA??? 建立數(shù)據(jù)域,長(zhǎng)度不超過(guò)2000
          CHGDTAARA??? 改變數(shù)據(jù)域,改變時(shí)數(shù)據(jù)域被鎖定
          DSPDTAARA??? 顯示數(shù)據(jù)域,可以以十六進(jìn)制方式顯示
          RTVDTAARA??? 檢索數(shù)據(jù)域,檢索值需要存入 CL 變量
          DLTDTAARA??? 刪除數(shù)據(jù)域
          WRKDTAARA?? 工作數(shù)據(jù)域

          ◆第四章? 測(cè)試功能

          提要:
          ?* CL 程序的編譯
          ?* CL 程序的測(cè)試

          4.1 CL 程序的編譯

          ??? CL 源程序必須經(jīng)過(guò)編譯,生成 *PGM 方可運(yùn)行。建立程序的方法有兩種:一是,使用 CL 命令 CRTCLPGM,二是,使用PDM 菜單選項(xiàng) 14,按 F4 鍵即可對(duì)命令參數(shù)進(jìn)行選擇。
          ??? 系統(tǒng)編譯的情況全部記錄在編譯清單中,通過(guò) WRKSPLF 即可看到。編譯過(guò)程中的錯(cuò)誤被列在相應(yīng)命令后面,以及文件的最后,方便用戶查找。下列類型的錯(cuò)誤將停止程序的建立:
          ?* 值錯(cuò)
          ?* 句法錯(cuò)
          ?* 命令內(nèi)部與參數(shù)間不符
          ?* 有效性檢查有錯(cuò)
          ???? CL 程序可以通過(guò)反編譯命令 RTVCLSRC,重新建立 CL 源程序。使用該命令時(shí),必須滿足建立編譯程序的參數(shù)ALWRTVSRC 為 *YES。 當(dāng)源程序被反編后,任何注釋信息不再重新產(chǎn)生,以下程序序言將被建立:
          ?* 所有者名
          ?* 源程序的最終修改日期
          ?* 源程序的重建日期和時(shí)間
          ?* 最初編譯時(shí)的許可程序級(jí)


          4.2 CL 程序的測(cè)試

          ??? 對(duì)于 CL 程序在編譯和運(yùn)行中的錯(cuò)誤,系統(tǒng)提供以下幾種測(cè)試功能:

          ?* 程序轉(zhuǎn)儲(chǔ)。 在 CL 源程序中輸入命令 DMPCLPGM,運(yùn)行后通過(guò) WRKSPLF 即可看到轉(zhuǎn)儲(chǔ)內(nèi)容。包括程序信息隊(duì)列的全部信息和全部變量的數(shù)值。如果程序運(yùn)行出錯(cuò),出現(xiàn)提示畫面時(shí),輸入 D 也可進(jìn)行程序轉(zhuǎn)儲(chǔ)。
          ?
          ?* 設(shè)置斷點(diǎn)。第一步,啟動(dòng)測(cè)試環(huán)境,使用命令 STRDBG PGM (PGMA);第二步,設(shè)置斷點(diǎn),使用命令 ADDBKP STMT(1500) PGMVAR( '&A'? '&B'); 第三步,運(yùn)行程序,顯示斷點(diǎn)信息;第四步,結(jié)束測(cè)試環(huán)境,使用命令 ENDDBG。

          ?* 設(shè)置跟蹤。跟蹤是記錄程序中語(yǔ)句執(zhí)行順序的過(guò)程。系統(tǒng)并不自動(dòng)顯示跟蹤信息,而須使用命令 DSPTRCDTA 請(qǐng)求顯示跟蹤信息,信息包括語(yǔ)句執(zhí)行的順序和 ADDTRC 命令中指定的變量值。

          posted on 2007-08-02 13:54 @yeafee 閱讀(781) 評(píng)論(0)  編輯  收藏 所屬分類: AS/400
          主站蜘蛛池模板: 太白县| 开阳县| 浪卡子县| 新宁县| 惠州市| 汾西县| 朝阳区| 新密市| 揭东县| 叙永县| 拜城县| 博野县| 方正县| 长丰县| 兴城市| 富锦市| 家居| 安图县| 科技| 砚山县| 蒙阴县| 和顺县| 疏附县| 荆州市| 海淀区| 新野县| 泰州市| 陆良县| 萝北县| 赤峰市| 石棉县| 辽宁省| 年辖:市辖区| 贵州省| 肃北| 鄂托克旗| 武宁县| 乐陵市| 临湘市| 平舆县| 临澧县|