RPG AS400程序員培訓(xùn)手冊_第1頁
RPG AS400程序員培訓(xùn)手冊_第2頁
RPG AS400程序員培訓(xùn)手冊_第3頁
RPG AS400程序員培訓(xùn)手冊_第4頁
RPG AS400程序員培訓(xùn)手冊_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2.8.4.44 O-R ON-EERROOR (On-Errror)沒用過OPENN (E) (OOpenn Fiile forr Prroceessiing) 打開文件Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQOPENN 文件件名OPENN 后面面的目標標,必須是在當(dāng)當(dāng)前程序序中已聲聲明的文文件名(不不是文件件的記錄錄格式名名),而且在OOPENN 操作作之后,在在程序結(jié)結(jié)束之前前之前,必必須有對應(yīng)的CLOOSE 操作。使用OPPEN 操作,文文件在聲聲明時,必須使用USSROPPN 關(guān)關(guān)鍵字(詳見見D 行說明)。ORxxx

2、 (OOr) 邏輯判斷斷或Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFLD001 IIFGTT FLLD033FLD001 OOREQQ FLLD022等價于IF FFLD001FFLD003 OOR FFLD001=FFLD002與IF、IFxxx,ANDD、ANDDxx 類似,RPPGLEE 的寫寫法ORR,比RPPG 的的寫法OORxxx 要靈靈活,而且可以以用來表表達一些些復(fù)雜的邏輯關(guān)關(guān)系。有有鑒于此,所所以通常常IF 語句中,我我會以O(shè)OR 為為主,基本不用用ORxxx。如如果在編編程序方方面,公公司/項目組無硬性性要

3、求,那那我覺得還是少用用ORxxx 吧吧,總覺得這這種寫法法的邏輯輯關(guān)系看看起來不不直接,尤尤其是有有很復(fù)雜雜的ANDD,ORR 時。OTHEER (Othherwwisee Seelecct) 分支語句的判判斷與分支語語句SELLECTT 一起起使用,表表示不符符合上述述所有條條件時的操作作,如下下:Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQSELEECTWHENN 條件件判斷11處理語句句1WHENN 條件件判斷22處理語句句2OTHEER處理語句句3ENDSSL在這個例例子中,當(dāng)當(dāng)滿足條件件判斷11 時,運行行處理語句1,

4、運行行結(jié)束后跳跳至ENNDSLL 處;如果不滿滿足條件件判斷11,則程序繼續(xù)續(xù)向下執(zhí)行,判判斷是否否滿足條件件判斷22。當(dāng)滿足條條件判斷斷2 時,運行行處理語句2,跳至至ENDDSL;當(dāng)不滿滿足當(dāng)不滿足足條件判判斷2 時,程序序繼續(xù)向下下執(zhí)下,當(dāng)當(dāng)讀到OTHHER 操作碼時時,無條條件運行處理語語句3(即當(dāng)當(dāng)程序當(dāng)當(dāng)前不滿滿足以上上所以條條件判斷斷時,則執(zhí)行OTHHER 之后的的語句。處理語句句允許有很多多句;條件判斷斷可以寫寫得很復(fù)復(fù)雜,也也允許對對不同的的字段進進行判斷斷;比如如說C 語言也有有分支語語句swiitchh,但是是這個語句只能能對一個字字段進行分支支判斷,ILE 語言與它不同

5、,允許對不同的字段進行行判斷就我目前前掌握的的測試情況況,上述述的SEELECCTWWHENN-OOTHEEREENDSSL,其其實也可以以寫做:IF 條條件判斷斷1處理語句句1ELSEEIF 條件判判斷2處理語句句2ELSEE處理語句句3ENDIIF即WHEEN 與與ELSSEIFF 是類似的,這這樣說,應(yīng)該可以以明白了了吧??傊?,SSELEECTENDDSL 是一個個很好用用的語法,尤尤其是在在表示很很多不同同的分支支處理時。OUT (EE) (Wrritee a Datta AAreaa)沒用過,講數(shù)據(jù)域域的。PARMM (IIdenntiffy PParaametterss) 定定義入

6、口參參數(shù)Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQRR*ENTTRY PLIISTPARMM FLLD011關(guān)于具體體內(nèi)容講講解,詳見見前面所所說“入口口參數(shù)”一一章。允許做為為入口參參數(shù)的有有:普通通變量、結(jié)構(gòu)變量、數(shù)數(shù)組變量關(guān)于PAARM、PLIIST,還有一種在Facctorry 11, Faactoory 2 也也填寫變變量或指指示器的的用法,不過過我不知知道它具具體表示示什么意思,也也不知道道該怎么用。請用過的來補充。PLISST (Ideentiify a PParaametter Lisst) 同上POSTT (E

7、) (PPostt)沒用過READD (N | E) (Reaad aa Reecorrd) 讀取記錄1. 基基本語法:Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQREADD 文件件記錄格式式名455 466READD后面跟跟的,必必須是聲明明的文件件記錄格式式名;LO 指指示器表表示鎖表指示示器,當(dāng)當(dāng)在指定定的時間(CHGGPF,WAIITRCCD 項項可看到到),需要讀取取的記錄錄仍被鎖,將會會打開LO 指示器器,即*IN445=1;EQ指示示器為是否讀到指示示器。當(dāng)當(dāng)未讀到任何何記錄時時,打開EQ 指示器器,即*IN446=

8、12. 當(dāng)當(dāng)文件在在程序中中,是用用只讀的方式式聲明時時,REAAD 操操作并不不會造成成鎖表;如果文件件在程序序中是用用修改的的方式聲聲明,RREADD 操作作成功后后,該記記錄被鎖;直到到執(zhí)行解鎖操操作(UUNLOOCK,或或UPDDATEE),或或REAAD 該該文件的的其它記記錄,才才會解鎖鎖如果文件件是用修修改的方方式聲明明,但希希望REEAD 操作不不鎖表時,那么就用REEAD(N),即Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQREADD(N) 文件件記錄格式式名455 466這樣讀文文件,就就不會鎖鎖記錄,但但是同

9、時時也不能能修改記記錄。如如果需要要修改記記錄,那那么在修改之之前(包包括對文件字字段賦值值之前),還必須再對該記錄進行一次定位操作(比如CHAIIN、REAAD 語語句均可可)。也也就是說說,如果果要修改改記錄,必必須先鎖住當(dāng)前前記錄(很很合理吧)3. 當(dāng)當(dāng)執(zhí)行REAAD 操操作時,程序序是根據(jù)據(jù)游標當(dāng)前在在文件中中所指向向的位置置,順序讀取下一條記錄錄。關(guān)于游標是如何何指向,還不是一個很簡單的問題,所以將會在下一章“數(shù)據(jù)庫相關(guān)關(guān)知識”中具具體講解。4. 執(zhí)執(zhí)行REAAD 操操作時,允許聲明的的文件沒沒有鍵值值。(即即PF 文件)READDC (E) (Reaad NNextt Chhang

10、ged Reccordd)沒用過,讀下一次次修改過過的記錄?READDE (N | EE) (Reead Equual Keyy) 讀讀取鍵值相等等的記錄錄語法與RREADD 操作作碼大致一一樣,這里不再再重復(fù),只說不同的的:假設(shè)程序序中已聲聲明邏輯輯文件PFFFHSSL3(鍵值為為FHSS01+FHSS02)Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFHSKKEY KLIISTKFLDD FLLD011KFLDD FLLD022FHSKKEY SETTLL FMTTFHSSDOW 1=11FHSKKEY REAADE FMTT

11、FHSS 155IF *IN115=1LEAVVEENDIIFENDDDO這段話的的意思,就就是定義義組合鍵值FHHSKEEY,然然后根據(jù)據(jù)這個FHSSKEYY 在邏輯文件件PFFHHSL33 中去去定位,循循環(huán)讀取PFFFHSLL3 中中,F(xiàn)HHS011、FHSS03 與FLDD01、FLDD02相相等的記記錄。當(dāng)讀讀取記錄結(jié)結(jié)束,或或鍵值不等等時,退出出循環(huán)(*INN15 是EQ 指示器器)。如如果將RREADDE 操操作碼換成成REAAD 操操作碼的話(當(dāng)然然,F(xiàn)aactoory 1 處處也就不不能有值值),就就沒有“鍵值不等等時退出循環(huán)”這這一層意思,只只是讀不到記錄錄時就退退出循環(huán)環(huán)

12、,但有有時我們使用邏輯輯文件,僅僅僅是需需要它的排序序,而不不需要讀讀不到鍵值值相等的的記錄就退退出循環(huán)環(huán)。所以以說,使用用REAAD 操操作碼,還是REAADE 操作碼,需要要根據(jù)實實際的要要求來決決定。以上的FFacttoryy 1 處填寫值的系統(tǒng)處處理,當(dāng)當(dāng)REAADE 操作碼在Facctorry 11 處未填寫寫值時,系統(tǒng)實際際上是將將當(dāng)前的的值與讀到的上上一條記記錄的關(guān)鍵字進行比較,而不不是與SSETLLL 時時的鍵值做比較較(讀第一條條記錄不做做比較!),如如果鍵值值不等時,置EQQ 指示示器為1。也也就是說說,如果沒有有與FHHSKEEY 鍵鍵值相同同的錄,那么系統(tǒng)并不是是直接找

13、找開EQ 指示器器,而是是會一直直保持正常地地往下讀讀,直到到找到與與讀到的第第一條記記錄關(guān)鍵鍵字不同同的記錄錄,才會會打開EQ 指示器器,所以要注注意。READDP (N | EE) (Reead Priior Reccordd) 讀讀取記錄游標上移簡單來說說,REAAD、READDE 操操作時,游標在數(shù)據(jù)據(jù)文件中中,是下下移的;即讀完第一一條記錄,游標標指向第第二條記記錄;讀完第二二條記錄錄,游標指向第第三條記記錄,依依此類推,直直至最后后一條記錄。但REEADPP 則正好相相反,游游標是上移移的,即即讀完第三三條記錄錄后,游游標指向第第二條記記錄;讀完完第二條條記錄后,游游標指向第第一條

14、記記錄,直直至讀完第一一條記錄錄。一般來說說,用REEAD、REAADE 的概率率會比RREADDP、REAADPEE 的概概率高得得多,不不過在某些情況況下,使使用REEADPP 操作作,又的的確會很很省事,這個一時間想不起例子來,大家可在編程序時多多實踐。READDPE (NN | E) (RReadd Prriorr Eqquall)雖然我沒沒用過,但猜猜想它應(yīng)應(yīng)該就是是指游標標上移,按按鍵值去讀取文件件。與RREADDP 的的關(guān)系,就類似于于REAADE 與REAAD 的的關(guān)系。REALLLOCC (E) (RRe-aalloocatte SStorragee)沒用過REL (EE)

15、(Reeleaase)沒用過RESEET (E) (Resset)將數(shù)據(jù)結(jié)結(jié)構(gòu)賦值成為初始值。注意是初初始值,不是是清空。如定義結(jié)結(jié)構(gòu):D FHHSDSS DSSD FHHS011 100 INNZ(ABBCD)D FHHS022 5 INZZ(EFFGH)那么,不不管對該該結(jié)構(gòu)如如何賦值值,當(dāng)執(zhí)行語句:C REESETT FHHSDSS之后,F(xiàn)FHS001 將將會變成ABBCD,F(xiàn)HSS02 將會變成EFFGH,即恢恢復(fù)成為初始值。RETUURN (HH | M | R) (Retturnn too Caalleer)RETUURN 是程序序結(jié)束。在前面,“簡單的程序流程”中,我們講過,“S

16、ETON LR” 與RETURN 這兩句話一起,做為為程序的的結(jié)束。這里,再再詳細解釋一下兩兩者之間間的區(qū)別,以及及關(guān)系:如果不寫寫RETTURNN,只寫寫“SEETONN LRR”,程程序執(zhí)行完最最后一句句之后,將將會再從從第一句開始執(zhí)執(zhí)行,造造成死循循環(huán)。在簡單單的程序序流程這這個例子子中,程程序原來來只想修修改讀到的第第一條記錄,而而如果沒沒有REETURRN 的的話,將會會把所有有的記錄錄都修改改掉,直直到最后后找不到到可修改改的記錄,然然后系統(tǒng)統(tǒng)報錯,異異常中斷斷。(這這種離奇奇的現(xiàn)象現(xiàn)在又測試試不到了了,可能能是當(dāng)時時寫錯程序了?把把F 寫成成了P?不管管它,當(dāng)當(dāng)是我寫寫錯了,總之

17、RETTURNN 是表表示程序序結(jié)束,沒沒有RETUURN,主主程序無無可執(zhí)行的語句時,它也也會結(jié)束;如如果REETURRN 出出現(xiàn)在主程程序的中中間,那么REETURRN 后后面的語語句將不不會執(zhí)行)如果只寫寫RETTURNN,不打打開指示器器*INNLR,根根據(jù)blloglliouu 所說 “程序序不會強強制將內(nèi)內(nèi)存中的數(shù)據(jù)據(jù)寫到磁磁盤中。4000 缺缺省的是是BLOOCK 輸出,即即數(shù)據(jù)記記錄滿一一個BLLOCKK 塊時時才會將將這一組記記錄寫到到磁盤上。那那么如果這時時BLOOCK 沒滿,數(shù)據(jù)據(jù)信息不不會立刻刻寫到磁磁盤上。之之后有其它作作業(yè)用到該文件,讀讀取的數(shù)數(shù)據(jù)就不不完整?!钡?/p>

18、果文文件有唯唯一鍵字,或或記錄日志志,必須須同步寫時,其實BLOOCK 實際被忽忽略,也也就是此時不不會有錯錯。目前前我們用的是是MIMMIX 備份,客客戶實際際上將所所有的文文件都列列入日志志,這時不寫也也不會出出現(xiàn)上述錯誤誤。但為避免一一些潛在在的問題題,養(yǎng)成良好好的編程風(fēng)格,建建議將SETOON LLR 與與RETTURNN 一同同,做為為程序結(jié)束的標志。當(dāng)當(dāng)然,如如果某個個程序頻頻繁被調(diào)用,且且不涉及文文 操作作時,可考考慮不打開指示器器*INNLR,僅用RETTURNN 作為結(jié)束,這樣樣程序不不會被PUURGEE 出內(nèi)內(nèi)存,可可提高調(diào)調(diào)用效率率。如果沒寫寫RETTURNN,也沒沒有打

19、開開指示器器*INNLR,在在編譯時時,系統(tǒng)將會報40 級錯,說找不到程序序結(jié)束的語句,所所以大可可放心。ROLBBK (E) (Rolll BBackk)1. 基基本語法Facttoryy 1 Opeerattionn Faactoory 2 RResuultROLBBK2. 該該操作碼無其它它參數(shù),就就是指對對事務(wù)處理進行回滾操作。3. IILE 程序中中,ROOLBKK 操作作可隨時時進行,也也允許在沒有有聲明CCOMMMIT 類型的文文件的情況下下,仍進進行ROLLBK 操作(對對該進程程這前的事事務(wù)進行確確認處理)f4. 關(guān)關(guān)于日志志的確認認回滾操作,在在后面會會另設(shè)專專門章節(jié)講述。

20、2.8.4.55 S-Z SCANN (E) (SScann Chharaacteer SStriing) 掃描字符符串掃描字符符或字符符串Faactoory 1 在在目標字符串串Facctorry 22 中是是否存在在Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFLD001 SSCANN FLLD022 N 26FLD001 可可以是字字符,也也可以是是字符變變量;可可以是一一位長,也可可以是多多位長。當(dāng)FLDD01 在FLDD02 中存在在時,EQ 指示器器打開,即*IIN266=11,同同時將FLDD02 中的起起始位置,賦

21、賦值給NN;當(dāng)FLDD01 在FLDD02 中不存存在時,EQ 指示器器保持關(guān)關(guān)閉狀態(tài),即*IIN266=00,同同時N=00允許從FFLD002 中中的指定定位置開開始檢查:FLD001 SSCANN FLLD022:2 NN 266如上句,即即表示從從FLDD02 的第2 位,開始掃描。在實際使使用中,比比如說我們判斷某某個字符符是否為為數(shù)字,就就可以先先定義一個09 的的常量,然后將要要判斷的的字符去去SCAAN 一一下這個常量量SELEECT (Beeginn a Sellectt Grroupp) 分分支語句在操作碼碼“OTHHER”中中講過,為方便讀者,列列出簡單單語法如如下:Fa

22、cttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQSELEECTWHENN 條件件判斷11處理語句句1WHENN 條件件判斷22處理語句句2OTHEER處理語句句3ENDSSL要注意,SELECT 操作碼,必須有對應(yīng)的ENDSL 操作碼,否則編譯無法通過。SETGGT (E) (Sett Grreatter Thaan) 定位操操作大于舉個例子子吧,假假設(shè)文件中中有一個個字段,是是標識順順序號的的,1、2、3、4。即該字段為1,表示第一一條記錄錄,該字段為2,表示示第2 條記錄。那那么:Facttoryy 1 Opeerattionn Fa

23、actoory 2 RResuult HI LO EQ2 SEETGTT 文件件記錄格式式名READD 文件件記錄格式式名這個REEAD 操作,RREADD 到的的,是第第3 條記錄。也也就是說說,SETTGT 操作碼,會將將游標定位到大大于鍵值值的第一一條記錄錄前。在實際使使用中,如如果我們們是按邏輯輯文件讀取,而而且讀了一條條記錄之后后,對其鍵值相同同的記錄都不不需要再再讀取時,就可可以用SSETGGT,不不過需要注注意,F(xiàn)Facttoryy 1 項,需要要是與鍵鍵值相同的變量量,即如如果文件件是使用用多個字字段做為為鍵值,那那么我們也需要要先定義義一個組合鍵值的變量,然后后Facctor

24、ry 11 處填寫這個組合鍵值的變量名。當(dāng)聲明文文件的鍵鍵值有多多項時,F(xiàn)acctorry 11 項的鍵值,允允許小于文文件的鍵鍵值,但但順序必須一致。即即聲明的的文件如如果鍵值值為:FHSS01、FHSS02、FHSS03,那那么我們在程序序中定義義三個類型與之相相同的變變量FLDD01、FLDD02、FLDD03,以以下寫法法都是有有效的FLDKKEY KLIISTKFLDD FLLD011KFLDD FLLD022KFLDD FLLD033FLDKKEY SETTGT 文件記錄錄格式名名FLDKKEY KLIISTKFLDD FLLD011KFLDD FLLD022FLDKKEY SET

25、TGT 文件記錄錄格式名名FLD001 SSETLLL 文文件記錄錄格式名名SETLLL (E) (Sett Loowerr Liimitt) 定定位操作作小于語法與SSETGGT 相相同,含含義與SETTGT 不同。SETTLL 操作碼,會將將游標定位到到與鍵值值相等的第一一條記錄錄之前,仍仍是上例例,如果果是2 SEETLLL 文件件記錄格式式名READD 文件件記錄格式式名那么REEAD 操作碼讀讀到的記錄錄,就是是第2 條記錄,看看到了吧吧,和SSETGGT 不不同。SETLLL 操操作碼還還可以用用來簡單單判斷當(dāng)當(dāng)前鍵值值是否存存在有記記錄,以以PFFFHSLL3 為為例(鍵值值為F

26、HSS01、FHSS02)Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFHSKKEY KLIISTKFLDD FLLD011KFLDD FLLD022EVALL FLLD011=001EVALL FLLD022=002FHSKKEY SETTLL 文件記錄錄格式名名44當(dāng)文件中中有相應(yīng)應(yīng)記錄時時,EQ 指示器器打開,即*IIN444=11當(dāng)文件中中無相應(yīng)應(yīng)記錄時時,EQ 指示器器關(guān)閉,即即*INN44=0(與CHHAINN 正好好相反,要要注意)而在這種種用法中中,SEETLLL 與CHAAIN 的區(qū)別在于,CCHAIIN 是是定

27、位讀讀取了記錄錄,而SEETLLL僅僅只是是判斷該該記錄是是否存在在。所以以用SEETLLL 操作作,不能能修改記記錄,也也無法取取出記錄錄的值。只能判斷斷記錄是否否存在。如果要要修改記記錄,或或取出記記錄的值,還需要有有一個讀讀取定位位的操作作,如REAAD,或或REAADE、REAADP 等(最最常用的的,應(yīng)該該就是REEAD 操作)SETOOFF (Seet IIndiicattor Offf) 關(guān)關(guān)閉指示示器Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQSETOOFF 10 11 12等價于EVALL *IIN100=00E

28、VALL *IIN111=00EVALL *IIN122=00在SETTOFFF 這個操作作碼中,指指示器填填在HII、LO、EQ 哪里都都沒關(guān)系,都都是表示示要被關(guān)關(guān)閉的指示示器SETOON (Sett Inndiccatoor OOn) 打開指示器器Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQSETOOFF 10 11 12等價于EVALL *IIN100=11EVALL *IIN111=11EVALL *IIN122=11在SETTON 這個操作作碼中,指指示器填填在HII、LO、EQ 哪里都都沒關(guān)系,都都是表示示要被關(guān)關(guān)閉

29、的指示器器SHTDDN (Shuut DDownn)沒用過SORTTA (Sorrt aan AArraay)沒用過SQRTT (H) (SSquaare Rooot) 開方Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQ9 SQQRT 3 NN這時,NN=3(因因為3 的平平方為9)9、3 都可以以是數(shù)字字型變量,或或者直接接是數(shù)字字SUB (HH) (Suubtrractt) 減減法操作作Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFLD001 SSUB FLDD02

30、 FLDD03SUB FLDD02 FLDD03看過前面面的ADDD、MULLT 操操作碼,這里不用用解釋也應(yīng)該明白白是什么么意思了了吧。那那就不多說了。SUBDDUR (EE) (Suubtrractt Duurattionn) 日日期相減減1. 減減日期Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFLD001 SSUBDDUR N:*Y FLDD02表示將日日期型變變量FLDD01 減去N 年,賦值值到日期期型變量FLDD02 中;N 可以以是一個個數(shù)字型型變量,也也可以就就是一個個數(shù)字,N 允許為負數(shù)*Y,*M,*D(還有其

31、它它的參數(shù)數(shù)值,可見ADDDDURR,其中中有詳細細解釋)2. 判判斷兩個個日期型型變量之間的天/月/年數(shù)Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFLD001 SSUBDDUR FLDD02 N:*D這時,NN 做為一結(jié)果變量,表表示日期期型變量FLDD01 與FLDD02 之間的天數(shù)數(shù)SUBSST (P | EE) (Suubsttrinng) 取字符符/字符串串Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQ2 SUUBSTT FLLD011:3 FFLD002表

32、示從字字段FLLD011 的第第3 位開始,取取2 位,左左對齊賦賦值到字字段FLLD022 中。要求字段段FLDD01 的長度必須大于或或等于33+2 位,否否則程序會會報錯??梢試L試試用%SUUBSTT 語句,也也是等價價的,如如下EVALL FLLD022=%SSUBSST(FFLD001:3:2)表示的是是同樣的意思思。起始位數(shù)數(shù)3,取的的長度2,在兩兩種寫法之之下,都都可以使使用數(shù)字字型變量來表表達。相比較之之下,%SUBBST 還有一種用法,就就是對字符的的指定位位置賦值值,這個就厲害了:EVALL %SSUBSST(FFLD002:3:2)=011看到了吧吧,這句話就是說,使字字

33、段FLLD022 的第第3、4 位(即即從第三三位開始,兩兩位長)等于“011”TAG (Taag) 定義標簽簽,與GOOTO 同用Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQFHSTTAG TAGGTESTT (D | T | ZZ | E) (TTestt Daate/Timme/TTimeestaamp)沒用過TESTTB (Tesst BBit)沒用過TESTTN (Tesst NNumeericc)沒用過TESTTZ (Tesst ZZonee)沒用過TIMEE (TTimee off Daay) -取取當(dāng)前系系統(tǒng)時間間

34、Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQTIMEE FLLD011FLD001 可可以是時時間型或或數(shù)字型型變量UNLOOCK (EE) (Unnlocck aa Daata Areea oor RReleeasee a Reccordd) 解解鎖Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQUNLOOCK 文件記錄錄格式名名UNLOOCK 是解鎖操作,在在某種程度上上,可以以將UNNLOCCK 視視為ROOLBKK,將UPPDATTE視為COOMMIIT。即即如果

35、鎖鎖定某條條記錄,并并對其字段段進行賦值之后后,使用用UPDDATEE 語句,將將會把修改改后的結(jié)結(jié)果保存存下來,即即修改文文件,而而UNLLOCKK 語句則不會修修改文件件,即否否認了之前對文件件字段做做的賦值值修改。從程序的的執(zhí)行效率率上來講講,UNLLOCKK 的執(zhí)行效率率是高于于UPDDATEE 的,因因為UPDDATEE操作時,系系統(tǒng)需要對文件的的每一個字字段進行確認處處理(DEEBUGG 時可以看看到),而UNNLOCCK 就就是簡單的的解鎖而已。UPDAATE (Moodiffy EExisstinng RRecoord) 修改改記錄語法與UUNLOOCK 一樣。這里需要要說明一

36、下下,在執(zhí)執(zhí)行UPDDATEE 的時候,必必須先使用用REAAD、CHAAIN 等操作作碼鎖定一條記記錄。如如果未鎖鎖住記錄,UPDDATEE 操作作碼將會報錯錯。當(dāng)執(zhí)行了UNNLOCCK、UPDDATEE、以及ROOLBKK 語句時,等于于是解鎖鎖,此時再執(zhí)行UPDDATEE 操作作碼之前,必必須再次鎖住記錄操作;WHENN (M | R) (Wheen) 分支判判斷語句中的的條件判判斷在操作碼碼“OTHHER”,“SSELEECT”中中都講過過,仍列列出簡單單語法如如下:Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQSELEEC

37、TWHENN 條件件判斷11處理語句句1WHENN 條件件判斷22處理語句句2OTHEER處理語句句3ENDSSLWHENNxx (Whhen Truue TThenn Seelecct)上面的語語法,是是RPGGLE 的語法,WHHENxxx 是是RPGG 的語法,也也就是SELEECTFLD001 WWHENNEQ FLDD02處理語句句1.這樣的語語法,在在表達復(fù)復(fù)雜的邏輯關(guān)關(guān)系時,必須與ANDDxx,ORxxx 一一起使用用,所以以我不使用WHHENxxx 這這個操作作碼。WRITTE (Creeatee Neew RRecoordss) 寫寫記錄常用的方方式:Facttoryy 1

38、Opeerattionn Faactoory 2 RResuult HI LO EQCLEAAR 文文件記錄錄格式名名EVALL 文件件字段11=xxxxxEVALL 文件件字段22=xxxxxWRITTE 文文件記錄錄格式名名表示在文文件中寫寫入一條條新記錄錄。文件件需要聲聲明為可寫的的。通常會在在給文件字字段賦值值之前,作作一次CCLEAAR 操操作來進進行初始始化,以以避免不不必要的麻煩。XFOOOT (H) (Summ thhe EElemmentts oof aan AArraay)沒用過,看看幫助,是是表示對對數(shù)組字段的的累加統(tǒng)統(tǒng)計。假設(shè)DIIMDAATA 定義為一個個數(shù)字型型的數(shù)

39、組組變量,F(xiàn)HHS011 為一個足足夠大的數(shù)數(shù)字型變變量Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQXFOOOT DDIMDDATAA FHHS011就表示將將數(shù)組DIMMDATTA 中中的所有有記錄的值都取出出來,匯匯總相加加,賦值值到數(shù)字字變量FHS001 中中XLATTE (P | EE) (Trransslatte)將一個字字符串中中指定的的字符,更更換成另外外的字符符。舉例:如如MYCCHARR1, MYCCHARR2 都都是兩個個20 位長的字符符型變量C MOOVELL AABCAAAACC1233 MMYCHHAR

40、11C AA:9 XLAATE MYCCHARR1 MMYCHHAR22執(zhí)行過這這個語句之后后,MYYCHAAR2 就等于于”9BBC9999C1123,即將將字符串串MYCCHARR1 中中所有的“AA”都變成了“9”;XLATTE 也也可能指指定起始始位置。如上句句更改為為:C AA:9 XLAATE MYCCHARR1:4 MMYCHHAR22則MYCCHARR2 等等于“AABC9999CC1233”,指指從第44 位開始(含含第4 位),將將“A”變成“9”賦值。Z-ADDD (H) (Zerro aand Addd) 向向數(shù)字型型變量賦值Facttoryy 1 Opeerattionn Faactoory 2 RResuult HI LO EQZ-ADDD FFLD001 FFLD002將數(shù)字型型變量FLDD01,賦值到數(shù)數(shù)字型變變量FLDD02 中。Z-ADDD、MOVVE 雖雖然同是是賦值操作作碼,但Z-ADDD 的用用法就遠遠沒有MOOVE 那么變化多多端,只能能在數(shù)字字型變量之間賦賦值。所所以也沒沒有什么么可說的了。ze

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論