![[計(jì)算機(jī)]RPGAS400程序員培訓(xùn)手冊(cè)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/0a4152b4-a408-424d-a22e-55d82c2f9eca/0a4152b4-a408-424d-a22e-55d82c2f9eca1.gif)
![[計(jì)算機(jī)]RPGAS400程序員培訓(xùn)手冊(cè)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/0a4152b4-a408-424d-a22e-55d82c2f9eca/0a4152b4-a408-424d-a22e-55d82c2f9eca2.gif)
![[計(jì)算機(jī)]RPGAS400程序員培訓(xùn)手冊(cè)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/0a4152b4-a408-424d-a22e-55d82c2f9eca/0a4152b4-a408-424d-a22e-55d82c2f9eca3.gif)
![[計(jì)算機(jī)]RPGAS400程序員培訓(xùn)手冊(cè)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/0a4152b4-a408-424d-a22e-55d82c2f9eca/0a4152b4-a408-424d-a22e-55d82c2f9eca4.gif)
![[計(jì)算機(jī)]RPGAS400程序員培訓(xùn)手冊(cè)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/0a4152b4-a408-424d-a22e-55d82c2f9eca/0a4152b4-a408-424d-a22e-55d82c2f9eca5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.2.8.4.4 O-R ON-ERROR (On-Error) 沒用過 OPEN (E) (Open File for Processing) 打開文件 Factory 1 Operation Factory 2 Result HI LO EQ OPEN 文件名 OPEN 后面的目標(biāo),必須是在當(dāng)前程序中已聲明的文件名(不是文件的記錄格式名), 而且在OPEN 操作之后,在程序結(jié)束之前之前,必須有對(duì)應(yīng)的CLOSE 操作。 使用OPEN 操作,文件在聲明時(shí),必須使用USROPN 關(guān)鍵字(詳見D 行說明)。 ORxx (Or) 邏輯判斷或 Factory 1 Operation Factory 2
2、 Result HI LO EQ FLD01 IFGT FLD03 FLD01 OREQ FLD02 等價(jià)于 IF FLD01FLD03 OR FLD01=FLD02 與IF、IFxx,AND、ANDxx 類似,RPGLE 的寫法OR,比RPG 的寫法ORxx 要靈活, 而且可以用來表達(dá)一些復(fù)雜的邏輯關(guān)系。有鑒于此,所以通常IF 語句中,我會(huì)以O(shè)R 為主, 基本不用ORxx。如果在編程序方面,公司/項(xiàng)目組無硬性要求,那我覺得還是少用ORxx 吧, 總覺得這種寫法的邏輯關(guān)系看起來不直接,尤其是有很復(fù)雜的AND,OR 時(shí)。 OTHER (Otherwise Select) 分支語句的判斷 與分支語
3、句SELECT 一起使用,表示不符合上述所有條件時(shí)的操作,如下: Factory 1 Operation Factory 2 Result HI LO EQ SELECT WHEN 條件判斷1 處理語句1 WHEN 條件判斷2 處理語句2 OTHER 處理語句3 ENDSL 在這個(gè)例子中,當(dāng)滿足條件判斷1 時(shí),運(yùn)行處理語句1,運(yùn)行結(jié)束后跳至ENDSL 處; 如果不滿足條件判斷1,則程序繼續(xù)向下執(zhí)行,判斷是否滿足條件判斷2。 當(dāng)滿足條件判斷2 時(shí),運(yùn)行處理語句2,跳至ENDSL;當(dāng)不滿足 當(dāng)不滿足條件判斷2 時(shí),程序繼續(xù)向下執(zhí)下,當(dāng)讀到OTHER 操作碼時(shí),無條件運(yùn) 行處理語句3(即當(dāng)程序當(dāng)前不
4、滿足以上所以條件判斷時(shí),則執(zhí)行OTHER 之后的語句。 處理語句允許有很多句; 條件判斷可以寫得很復(fù)雜,也允許對(duì)不同的字段進(jìn)行判斷;比如說C 語言也有分支語 句switch,但是這個(gè)語句只能對(duì)一個(gè)字段進(jìn)行分支判斷,ILE 語言與它不同,允許對(duì)不同的 字段進(jìn)行判斷 就我目前掌握的測試情況,上述的SELECTWHEN-OTHERENDSL,其實(shí)也可以 寫做: IF 條件判斷1 處理語句1 ELSEIF 條件判斷2 處理語句2 ELSE 處理語句3 ENDIF 即WHEN 與ELSEIF 是類似的,這樣說,應(yīng)該可以明白了吧。 總之,SELECTENDSL 是一個(gè)很好用的語法,尤其是在表示很多不同的分
5、支處理時(shí)。 OUT (E) (Write a Data Area) 沒用過,講數(shù)據(jù)域的。 PARM (Identify Parameters) 定義入口參數(shù) Factory 1 Operation Factory 2 Result HI LO EQR *ENTRY PLIST PARM FLD01 關(guān)于具體內(nèi)容講解,詳見前面所說“入口參數(shù)”一章。 允許做為入口參數(shù)的有:普通變量、結(jié)構(gòu)變量、數(shù)組變量 關(guān)于PARM、PLIST,還有一種在Factory 1, Factory 2 也填寫變量或指示器的用 法,不過我不知道它具體表示什么意思,也不知道該怎么用。請(qǐng)用過的來補(bǔ)充。 PLIST (Ident
6、ify a Parameter List) 同上 POST (E) (Post) 沒用過 READ (N | E) (Read a Record) 讀取記錄 1. 基本語法: Factory 1 Operation Factory 2 Result HI LO EQ READ 文件記錄格式名 45 46 READ后面跟的,必須是聲明的文件記錄格式名; LO 指示器表示鎖表指示器,當(dāng)在指定的時(shí)間(CHGPF,WAITRCD 項(xiàng)可看到), 需要讀取的記錄仍被鎖,將會(huì)打開LO 指示器,即*IN45=1; EQ指示器為是否讀到指示器。當(dāng)未讀到任何記錄時(shí),打開EQ 指示器,即*IN46=1 2. 當(dāng)文件
7、在程序中,是用只讀的方式聲明時(shí),READ 操作并不會(huì)造成鎖表; 如果文件在程序中是用修改的方式聲明,READ 操作成功后,該記錄被鎖;直到執(zhí) 行解鎖操作(UNLOCK,或UPDATE),或READ 該文件的其它記錄,才會(huì)解鎖 如果文件是用修改的方式聲明,但希望READ 操作不鎖表時(shí),那么就用READ(N), 即 Factory 1 Operation Factory 2 Result HI LO EQ READ(N) 文件記錄格式名 45 46 這樣讀文件,就不會(huì)鎖記錄,但是同時(shí)也不能修改記錄。如果需要修改記錄,那么 在修改之前(包括對(duì)文件字段賦值之前),還必須再對(duì)該記錄進(jìn)行一次定位操作(比如
8、 CHAIN、READ 語句均可)。也就是說,如果要修改記錄,必須先鎖住當(dāng)前記錄(很合 理吧) 3. 當(dāng)執(zhí)行READ 操作時(shí),程序是根據(jù)游標(biāo)當(dāng)前在文件中所指向的位置,順序讀取下 一條記錄。關(guān)于游標(biāo)是如何指向,還不是一個(gè)很簡單的問題,所以將會(huì)在下一章“數(shù) 據(jù)庫相關(guān)知識(shí)”中具體講解。 4. 執(zhí)行READ 操作時(shí),允許聲明的文件沒有鍵值。(即PF 文件) READC (E) (Read Next Changed Record) 沒用過,讀下一次修改過的記錄? READE (N | E) (Read Equal Key) 讀取鍵值相等的記錄 語法與READ 操作碼大致一樣,這里不再重復(fù),只說不同的:
9、假設(shè)程序中已聲明邏輯文件PFFHSL3(鍵值為FHS01+FHS02) Factory 1 Operation Factory 2 Result HI LO EQ FHSKEY KLIST KFLD FLD01 KFLD FLD02 FHSKEY SETLL FMTFHS DOW 1=1 FHSKEY READE FMTFHS 15 IF *IN15=1 LEAVE ENDIF ENDDO 這段話的意思,就是定義組合鍵值FHSKEY,然后根據(jù)這個(gè)FHSKEY 在邏輯文件 PFFHSL3 中去定位,循環(huán)讀取PFFHSL3 中,F(xiàn)HS01、FHS03 與FLD01、FLD02 相等的記 錄。當(dāng)讀取
10、記錄結(jié)束,或鍵值不等時(shí),退出循環(huán)(*IN15 是EQ 指示器)。如果將READE 操 作碼換成READ 操作碼的話(當(dāng)然,F(xiàn)actory 1 處也就不能有值),就沒有“鍵值不等時(shí)退出 循環(huán)”這一層意思,只是讀不到記錄時(shí)就退出循環(huán),但有時(shí)我們使用邏輯文件,僅僅是需要 它的排序,而不需要讀不到鍵值相等的記錄就退出循環(huán)。所以說,使用READ 操作碼,還 是READE 操作碼,需要根據(jù)實(shí)際的要求來決定。 以上的Factory 1 處填寫值的系統(tǒng)處理,當(dāng)READE 操作碼在Factory 1 處未填寫值時(shí), 系統(tǒng)實(shí)際上是將當(dāng)前的值與讀到的上一條記錄的關(guān)鍵字進(jìn)行比較,而不是與SETLL 時(shí)的鍵 值做比較(
11、讀第一條記錄不做比較?。?,如果鍵值不等時(shí),置EQ 指示器為1。也就是說, 如果沒有與FHSKEY 鍵值相同的錄,那么系統(tǒng)并不是直接找開EQ 指示器,而是會(huì)一直保 持正常地往下讀,直到找到與讀到的第一條記錄關(guān)鍵字不同的記錄,才會(huì)打開EQ 指示器, 所以要注意。 READP (N | E) (Read Prior Record) 讀取記錄游標(biāo)上移 簡單來說,READ、READE 操作時(shí),游標(biāo)在數(shù)據(jù)文件中,是下移的;即讀完第一條記 錄,游標(biāo)指向第二條記錄;讀完第二條記錄,游標(biāo)指向第三條記錄,依此類推,直至最后一 條記錄。但READP 則正好相反,游標(biāo)是上移的,即讀完第三條記錄后,游標(biāo)指向第二條記 錄
12、;讀完第二條記錄后,游標(biāo)指向第一條記錄,直至讀完第一條記錄。 一般來說,用READ、READE 的概率會(huì)比READP、READPE 的概率高得多,不過在 某些情況下,使用READP 操作,又的確會(huì)很省事,這個(gè)一時(shí)間想不起例子來,大家可在編 程序時(shí)多實(shí)踐。 READPE (N | E) (Read Prior Equal) 雖然我沒用過,但猜想它應(yīng)該就是指游標(biāo)上移,按鍵值去讀取文件。與READP 的關(guān)系, 就類似于READE 與READ 的關(guān)系。 REALLOC (E) (Re-allocate Storage) 沒用過 REL (E) (Release) 沒用過 RESET (E) (Rese
13、t) 將數(shù)據(jù)結(jié)構(gòu)賦值成為初始值。 注意是初始值,不是清空。 如定義結(jié)構(gòu): D FHSDS DS D FHS01 10 INZ(ABCD) D FHS02 5 INZ(EFGH) 那么,不管對(duì)該結(jié)構(gòu)如何賦值,當(dāng)執(zhí)行語句: C RESET FHSDS 之后,F(xiàn)HS01 將會(huì)變成ABCD,F(xiàn)HS02 將會(huì)變成EFGH,即恢復(fù)成為初始值。 RETURN (H | M | R) (Return to Caller) RETURN 是程序結(jié)束。 在前面,“簡單的程序流程”中,我們講過,“SETON LR” 與RETURN 這兩句話一 起,做為程序的結(jié)束。這里,再詳細(xì)解釋一下兩者之間的區(qū)別,以及關(guān)系: 如果
14、不寫RETURN,只寫“SETON LR”,程序執(zhí)行完最后一句之后,將會(huì)再從第一 句開始執(zhí)行,造成死循環(huán)。在簡單的程序流程這個(gè)例子中,程序原來只想修改讀到的第一條 記錄,而如果沒有RETURN 的話,將會(huì)把所有的記錄都修改掉,直到最后找不到可修改的 記錄,然后系統(tǒng)報(bào)錯(cuò),異常中斷。(這種離奇的現(xiàn)象現(xiàn)在又測試不到了,可能是當(dāng)時(shí)寫錯(cuò)程 序了?把F 寫成了P?不管它,當(dāng)是我寫錯(cuò)了,總之RETURN 是表示程序結(jié)束,沒有 RETURN,主程序無可執(zhí)行的語句時(shí),它也會(huì)結(jié)束;如果RETURN 出現(xiàn)在主程序的中間, 那么RETURN 后面的語句將不會(huì)執(zhí)行) 如果只寫RETURN,不打開指示器*INLR,根據(jù)b
15、logliou 所說 “程序不會(huì)強(qiáng)制將內(nèi)存 中的數(shù)據(jù)寫到磁盤中。400 缺省的是BLOCK 輸出,即數(shù)據(jù)記錄滿一個(gè)BLOCK 塊時(shí)才會(huì)將 這一組記錄寫到磁盤上。那么如果這時(shí)BLOCK 沒滿,數(shù)據(jù)信息不會(huì)立刻寫到磁盤上。之后 有其它作業(yè)用到該文件,讀取的數(shù)據(jù)就不完整?!?但如果文件有唯一鍵字,或記錄日志,必須同步寫時(shí),其實(shí)BLOCK 實(shí)際被忽略,也就 是此時(shí)不會(huì)有錯(cuò)。目前我們用的是MIMIX 備份,客戶實(shí)際上將所有的文件都列入日志,這 時(shí)不寫也不會(huì)出現(xiàn)上述錯(cuò)誤。但為避免一些潛在的問題,養(yǎng)成良好的編程風(fēng)格,建議將 SETON LR 與RETURN 一同,做為程序結(jié)束的標(biāo)志。當(dāng)然,如果某個(gè)程序頻繁被
16、調(diào)用,且 不涉及文 操作時(shí),可考慮不打開指示器*INLR,僅用RETURN 作為結(jié)束,這樣程序不 會(huì)被PURGE 出內(nèi)存,可提高調(diào)用效率。 如果沒寫RETURN,也沒有打開指示器*INLR,在編譯時(shí),系統(tǒng)將會(huì)報(bào)40 級(jí)錯(cuò),說找 不到程序結(jié)束的語句,所以大可放心。 ROLBK (E) (Roll Back) 1. 基本語法 Factory 1 Operation Factory 2 Result ROLBK 2. 該操作碼無其它參數(shù),就是指對(duì)事務(wù)處理進(jìn)行回滾操作。 3. ILE 程序中,ROLBK 操作可隨時(shí)進(jìn)行,也允許在沒有聲明COMMIT 類型的文件 的情況下,仍進(jìn)行ROLBK 操作(對(duì)該進(jìn)
17、程這前的事務(wù)進(jìn)行確認(rèn)處理)f 4. 關(guān)于日志的確認(rèn)回滾操作,在后面會(huì)另設(shè)專門章節(jié)講述。 2.8.4.5 S-Z SCAN (E) (Scan Character String) 掃描字符串 掃描字符或字符串Factory 1 在目標(biāo)字符串Factory 2 中是否存在 Factory 1 Operation Factory 2 Result HI LO EQ FLD01 SCAN FLD02 N 26 FLD01 可以是字符,也可以是字符變量;可以是一位長,也可以是多位長。 當(dāng)FLD01 在FLD02 中存在時(shí),EQ 指示器打開,即*IN26=1,同時(shí)將FLD02 中的起始 位置,賦值給N;
18、當(dāng)FLD01 在FLD02 中不存在時(shí),EQ 指示器保持關(guān)閉狀態(tài),即*IN26=0,同時(shí)N=0 允許從FLD02 中的指定位置開始檢查: FLD01 SCAN FLD02:2 N 26 如上句,即表示從FLD02 的第2 位,開始掃描。 在實(shí)際使用中,比如說我們判斷某個(gè)字符是否為數(shù)字,就可以先定義一個(gè)09 的常量, 然后將要判斷的字符去SCAN 一下這個(gè)常量 SELECT (Begin a Select Group) 分支語句 在操作碼“OTHER”中講過,為方便讀者,列出簡單語法如下: Factory 1 Operation Factory 2 Result HI LO EQ SELECT
19、WHEN 條件判斷1 處理語句1 WHEN 條件判斷2 處理語句2 OTHER 處理語句3 ENDSL 要注意,SELECT 操作碼,必須有對(duì)應(yīng)的ENDSL 操作碼,否則編譯無法通過。 SETGT (E) (Set Greater Than) 定位操作大于 舉個(gè)例子吧,假設(shè)文件中有一個(gè)字段,是標(biāo)識(shí)順序號(hào)的,1、2、3、4。即該字段為1, 表示第一條記錄,該字段為2,表示第2 條記錄。那么: Factory 1 Operation Factory 2 Result HI LO EQ 2 SETGT 文件記錄格式名 READ 文件記錄格式名 這個(gè)READ 操作,READ 到的,是第3 條記錄。也就
20、是說,SETGT 操作碼,會(huì)將游標(biāo) 定位到大于鍵值的第一條記錄前。 在實(shí)際使用中,如果我們是按邏輯文件讀取,而且讀了一條記錄之后,對(duì)其鍵值相同的 記錄都不需要再讀取時(shí),就可以用SETGT,不過需要注意,F(xiàn)actory 1 項(xiàng),需要是與鍵值相 同的變量,即如果文件是使用多個(gè)字段做為鍵值,那么我們也需要先定義一個(gè)組合鍵值的變 量,然后Factory 1 處填寫這個(gè)組合鍵值的變量名。 當(dāng)聲明文件的鍵值有多項(xiàng)時(shí),F(xiàn)actory 1 項(xiàng)的鍵值,允許小于文件的鍵值,但順序必須 一致。即聲明的文件如果鍵值為:FHS01、FHS02、FHS03,那么我們?cè)诔绦蛑卸x三個(gè)類 型與之相同的變量FLD01、FLD0
21、2、FLD03,以下寫法都是有效的 FLDKEY KLIST KFLD FLD01 KFLD FLD02 KFLD FLD03 FLDKEY SETGT 文件記錄格式名 FLDKEY KLIST KFLD FLD01 KFLD FLD02 FLDKEY SETGT 文件記錄格式名 FLD01 SETLL 文件記錄格式名 SETLL (E) (Set Lower Limit) 定位操作小于 語法與SETGT 相同,含義與SETGT 不同。SETLL 操作碼,會(huì)將游標(biāo)定位到與鍵值相 等的第一條記錄之前,仍是上例,如果是 2 SETLL 文件記錄格式名 READ 文件記錄格式名 那么READ 操作碼
22、讀到的記錄,就是第2 條記錄,看到了吧,和SETGT 不同。 SETLL 操作碼還可以用來簡單判斷當(dāng)前鍵值是否存在有記錄,以PFFHSL3 為例(鍵值 為FHS01、FHS02) Factory 1 Operation Factory 2 Result HI LO EQ FHSKEY KLIST KFLD FLD01 KFLD FLD02 EVAL FLD01=01 EVAL FLD02=02 FHSKEY SETLL 文件記錄格式名 44 當(dāng)文件中有相應(yīng)記錄時(shí),EQ 指示器打開,即*IN44=1 當(dāng)文件中無相應(yīng)記錄時(shí),EQ 指示器關(guān)閉,即*IN44=0(與CHAIN 正好相反,要注意) 而在
23、這種用法中,SETLL 與CHAIN 的區(qū)別在于,CHAIN 是定位讀取了記錄,而SETLL 僅僅只是判斷該記錄是否存在。所以用SETLL 操作,不能修改記錄,也無法取出記錄的值。 只能判斷記錄是否存在。如果要修改記錄,或取出記錄的值,還需要有一個(gè)讀取定位的操作, 如READ,或READE、READP 等(最常用的,應(yīng)該就是READ 操作) SETOFF (Set Indicator Off) 關(guān)閉指示器 Factory 1 Operation Factory 2 Result HI LO EQ SETOFF 10 11 12 等價(jià)于 EVAL *IN10=0 EVAL *IN11=0 EVA
24、L *IN12=0 在SETOFF 這個(gè)操作碼中,指示器填在HI、LO、EQ 哪里都沒關(guān)系,都是表示要被關(guān) 閉的指示器 SETON (Set Indicator On) 打開指示器 Factory 1 Operation Factory 2 Result HI LO EQ SETOFF 10 11 12 等價(jià)于 EVAL *IN10=1 EVAL *IN11=1 EVAL *IN12=1 在SETON 這個(gè)操作碼中,指示器填在HI、LO、EQ 哪里都沒關(guān)系,都是表示要被關(guān)閉 的指示器 SHTDN (Shut Down) 沒用過 SORTA (Sort an Array) 沒用過 SQRT (H
25、) (Square Root) 開方 Factory 1 Operation Factory 2 Result HI LO EQ 9 SQRT 3 N 這時(shí),N=3(因?yàn)? 的平方為9) 9、3 都可以是數(shù)字型變量,或者直接是數(shù)字 SUB (H) (Subtract) 減法操作 Factory 1 Operation Factory 2 Result HI LO EQ FLD01 SUB FLD02 FLD03 SUB FLD02 FLD03 看過前面的ADD、MULT 操作碼,這里不用解釋也應(yīng)該明白是什么意思了吧。那就不 多說了。 SUBDUR (E) (Subtract Duration)
26、 日期相減 1. 減日期 Factory 1 Operation Factory 2 Result HI LO EQ FLD01 SUBDUR N:*Y FLD02 表示將日期型變量FLD01 減去N 年,賦值到日期型變量FLD02 中; N 可以是一個(gè)數(shù)字型變量,也可以就是一個(gè)數(shù)字,N 允許為負(fù)數(shù) *Y,*M,*D(還有其它的參數(shù)值,可見ADDDUR,其中有詳細(xì)解釋) 2. 判斷兩個(gè)日期型變量之間的天/月/年數(shù) Factory 1 Operation Factory 2 Result HI LO EQ FLD01 SUBDUR FLD02 N:*D 這時(shí),N 做為一結(jié)果變量,表示日期型變量F
27、LD01 與FLD02 之間的天數(shù) SUBST (P | E) (Substring) 取字符/字符串 Factory 1 Operation Factory 2 Result HI LO EQ 2 SUBST FLD01:3 FLD02 表示從字段FLD01 的第3 位開始,取2 位,左對(duì)齊賦值到字段FLD02 中。 要求字段FLD01 的長度必須大于或等于3+2 位,否則程序會(huì)報(bào)錯(cuò)。 可以嘗試用%SUBST 語句,也是等價(jià)的,如下 EVAL FLD02=%SUBST(FLD01:3:2) 表示的是同樣的意思。 起始位數(shù)3,取的長度2,在兩種寫法之下,都可以使用數(shù)字型變量來表達(dá)。 相比較之下
28、,%SUBST 還有一種用法,就是對(duì)字符的指定位置賦值,這個(gè)就厲害了: EVAL %SUBST(FLD02:3:2)=01 看到了吧,這句話就是說,使字段FLD02 的第3、4 位(即從第三位開始,兩位長)等 于“01” TAG (Tag) 定義標(biāo)簽,與GOTO 同用 Factory 1 Operation Factory 2 Result HI LO EQ FHSTAG TAG TEST (D | T | Z | E) (Test Date/Time/Timestamp) 沒用過 TESTB (Test Bit) 沒用過 TESTN (Test Numeric) 沒用過 TESTZ (Tes
29、t Zone) 沒用過 TIME (Time of Day) -取當(dāng)前系統(tǒng)時(shí)間 Factory 1 Operation Factory 2 Result HI LO EQ TIME FLD01 FLD01 可以是時(shí)間型或數(shù)字型變量 UNLOCK (E) (Unlock a Data Area or Release a Record) 解鎖 Factory 1 Operation Factory 2 Result HI LO EQ UNLOCK 文件記錄格式名 UNLOCK 是解鎖操作,在某種程度上,可以將UNLOCK 視為ROLBK,將UPDATE 視為COMMIT。即如果鎖定某條記錄,并對(duì)其
30、字段進(jìn)行賦值之后,使用UPDATE 語句,將 會(huì)把修改后的結(jié)果保存下來,即修改文件,而UNLOCK 語句則不會(huì)修改文件,即否認(rèn)了之 前對(duì)文件字段做的賦值修改。 從程序的執(zhí)行效率上來講,UNLOCK 的執(zhí)行效率是高于UPDATE 的,因?yàn)閁PDATE 操作時(shí),系統(tǒng)需要對(duì)文件的每一個(gè)字段進(jìn)行確認(rèn)處理(DEBUG 時(shí)可以看到),而UNLOCK 就 是簡單的解鎖而已。 UPDATE (Modify Existing Record) 修改記錄 語法與UNLOCK 一樣。 這里需要說明一下,在執(zhí)行UPDATE 的時(shí)候,必須先使用READ、CHAIN 等操作碼鎖 定一條記錄。如果未鎖住記錄,UPDATE 操
31、作碼將會(huì)報(bào)錯(cuò)。當(dāng)執(zhí)行了UNLOCK、UPDATE、 以及ROLBK 語句時(shí),等于是解鎖,此時(shí)再執(zhí)行UPDATE 操作碼之前,必須再次鎖住記錄 操作; WHEN (M | R) (When) 分支判斷語句中的條件判斷 在操作碼“OTHER”,“SELECT”中都講過,仍列出簡單語法如下: Factory 1 Operation Factory 2 Result HI LO EQ SELECT WHEN 條件判斷1 處理語句1 WHEN 條件判斷2 處理語句2 OTHER 處理語句3 ENDSL WHENxx (When True Then Select) 上面的語法,是RPGLE 的語法,WHE
32、Nxx 是RPG 的語法,也就是 SELECT FLD01 WHENEQ FLD02 處理語句1 . 這樣的語法,在表達(dá)復(fù)雜的邏輯關(guān)系時(shí),必須與ANDxx,ORxx 一起使用,所以我不 使用WHENxx 這個(gè)操作碼。 WRITE (Create New Records) 寫記錄 常用的方式: Factory 1 Operation Factory 2 Result HI LO EQ CLEAR 文件記錄格式名 EVAL 文件字段1=xxxx EVAL 文件字段2=xxxx WRITE 文件記錄格式名 表示在文件中寫入一條新記錄。文件需要聲明為可寫的。 通常會(huì)在給文件字段賦值之前,作一次CLEA
33、R 操作來進(jìn)行初始化,以避免不必要 的麻煩。 XFOOT (H) (Sum the Elements of an Array) 沒用過,看幫助,是表示對(duì)數(shù)組字段的累加統(tǒng)計(jì)。 假設(shè)DIMDATA 定義為一個(gè)數(shù)字型的數(shù)組變量,F(xiàn)HS01 為一個(gè)足夠大的數(shù)字型變量 Factory 1 Operation Factory 2 Result HI LO EQ XFOOT DIMDATA FHS01 就表示將數(shù)組DIMDATA 中的所有記錄的值都取出來,匯總相加,賦值到數(shù)字變量 FHS01 中 XLATE (P | E) (Translate) 將一個(gè)字符串中指定的字符,更換成另外的字符。 舉例:如MYC
34、HAR1, MYCHAR2 都是兩個(gè)20 位長的字符型變量 C MOVEL ABCAAAC123 MYCHAR1 C A:9 XLATE MYCHAR1 MYCHAR2 執(zhí)行過這個(gè)語句之后,MYCHAR2 就等于”9BC999C123,即將字符串MYCHAR1 中所 有的“A”都變成了“9”; XLATE 也可能指定起始位置。如上句更改為: C A:9 XLATE MYCHAR1:4 MYCHAR2 則MYCHAR2 等于“ABC999C123”,指從第4 位開始(含第4 位),將“A”變成“9” 賦值。 Z-ADD (H) (Zero and Add) 向數(shù)字型變量賦值 Factory 1 Operation Factory 2 Result HI LO EQ Z-ADD FLD01 FLD02 將數(shù)字型變量FLD01,賦值到數(shù)字型變量FLD02 中。 Z-ADD、MOVE 雖然同是賦值操作碼,但Z-ADD 的用法就遠(yuǎn)沒有MOVE 那么變化多 端,只能在數(shù)字型變量之間賦值。所以也沒有什么可說的了。zero 如果要對(duì)數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代簡約風(fēng)格與科技公司辦公環(huán)境的融合
- 現(xiàn)代物流技術(shù)與醫(yī)療物資保障體系
- 溝通技巧在教育工作中的創(chuàng)新應(yīng)用
- 環(huán)保技術(shù)在現(xiàn)代城市建設(shè)中的應(yīng)用
- 物流信息技術(shù)在商業(yè)領(lǐng)域的應(yīng)用
- Unit 3 Where did you go?PartB (說課稿)-2023-2024學(xué)年人教PEP版英語六年級(jí)下冊(cè)
- 2《燭之武退秦師》說課稿-2024-2025學(xué)年高一語文下學(xué)期同步說課稿(統(tǒng)編版必修下冊(cè))
- 2024新教材高中地理 第四章 區(qū)域發(fā)展戰(zhàn)略 第二節(jié) 我國區(qū)域發(fā)展戰(zhàn)略說課稿 湘教版必修第二冊(cè)
- Unit3 Amazing animals(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)001
- 2024年高中化學(xué) 第三章 晶體結(jié)構(gòu)與性質(zhì) 章末整合說課稿 新人教版選修3
- 2025-2030年中國清真食品行業(yè)運(yùn)行狀況及投資發(fā)展前景預(yù)測報(bào)告
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 2025年河南洛陽市孟津區(qū)引進(jìn)研究生學(xué)歷人才50人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險(xiǎn)評(píng)估合同3篇
- 蛋雞生產(chǎn)飼養(yǎng)養(yǎng)殖培訓(xùn)課件
- 數(shù)字化轉(zhuǎn)型中的職業(yè)能力重構(gòu)
- 運(yùn)用PDCA降低住院患者跌倒-墜床發(fā)生率
- 臨床提高膿毒性休克患者1h集束化措施落實(shí)率PDCA品管圈
- 小學(xué)生品德發(fā)展水平指標(biāo)評(píng)價(jià)體系(小學(xué))
評(píng)論
0/150
提交評(píng)論