2023年RPGAS400程序員培訓(xùn)手冊_第1頁
2023年RPGAS400程序員培訓(xùn)手冊_第2頁
2023年RPGAS400程序員培訓(xùn)手冊_第3頁
2023年RPGAS400程序員培訓(xùn)手冊_第4頁
2023年RPGAS400程序員培訓(xùn)手冊_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2.8.4.4O--RON-ERROR(On-Error)沒用過OPEN{(E)}(OpenFileforProcessing)打開文獻(xiàn)Factory1OperationFactory2ResultHILOEQOPEN文獻(xiàn)名OPEN后面的目的,必須是在當(dāng)前程序中已聲明的文獻(xiàn)名(不是文獻(xiàn)的記錄格式名),并且在OPEN操作之后,在程序結(jié)束之前之前,必須有相應(yīng)的CLOSE操作。使用OPEN操作,文獻(xiàn)在聲明時(shí),必須使用USROPN關(guān)鍵字(詳見D行說明)。ORxx(Or)邏輯判斷—或Factory1O(jiān)perationFactory2ResultHILOEQFLD01IFGTFLD03FLD01O(jiān)REQFLD02等價(jià)于IFFLD01>FLD03ORFLD01=FLD02與IF、IFxx,AND、ANDxx類似,RPGLE的寫法OR,比RPG的寫法ORxx要靈活,并且可以用來表達(dá)一些復(fù)雜的邏輯關(guān)系。有鑒于此,所以通常IF語句中,我會(huì)以O(shè)R為主,基本不用ORxx。假如在編程序方面,公司/項(xiàng)目組無硬性規(guī)定,那我覺得還是少用ORxx吧,總覺得這種寫法的邏輯關(guān)系看起來不直接,特別是有很復(fù)雜的AND,OR時(shí)。OTHER(OtherwiseSelect)分支語句的判斷與分支語句SELECT一起使用,表達(dá)不符合上述所有條件時(shí)的操作,如下:Factory1O(jiān)perationFactory2ResultHILOEQSELECTWHEN條件判斷1解決語句1WHEN條件判斷2解決語句2OTHER解決語句3ENDSL在這個(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)前不滿足以上所以條件判斷時(shí),則執(zhí)行OTHER之后的語句。解決語句允許有很多句;條件判斷可以寫得很復(fù)雜,也允許對不同的字段進(jìn)行判斷;比如說C語言也有分支語句switch,但是這個(gè)語句只能對一個(gè)字段進(jìn)行分支判斷,ILE語言與它不同,允許對不同的字段進(jìn)行判斷就我目前掌握的測試情況,上述的SELECT—WHEN--OTHER—ENDSL,其實(shí)也可以寫做:IF條件判斷1解決語句1ELSEIF條件判斷2解決語句2ELSE解決語句3ENDIF即WHEN與ELSEIF是類似的,這樣說,應(yīng)當(dāng)可以明白了吧??傊?,SELECT—ENDSL是一個(gè)很好用的語法,特別是在表達(dá)很多不同的分支解決時(shí)。OUT{(E)}(WriteaDataArea)沒用過,講數(shù)據(jù)域的。PARM(IdentifyParameters)定義入口參數(shù)Factory1O(jiān)perationFactory2ResultHILOEQR*ENTRYPLISTPARMFLD01關(guān)于具體內(nèi)容講解,詳見前面所說“入口參數(shù)”一章。允許做為入口參數(shù)的有:普通變量、結(jié)構(gòu)變量、數(shù)組變量關(guān)于PARM、PLIST,尚有一種在Factory1,Factory2也填寫變量或指示器的用法,但是我不知道它具體表達(dá)什么意思,也不知道該怎么用。請用過的來補(bǔ)充。PLIST(IdentifyaParameterList)同上POST{(E)}(Post)沒用過READ{(N|E)}(ReadaRecord)讀取記錄1.基本語法:Factory1OperationFactory2ResultHILOEQREAD文獻(xiàn)記錄格式名4546READ后面跟的,必須是聲明的文獻(xiàn)記錄格式名;LO指示器表達(dá)鎖表指示器,當(dāng)在指定的時(shí)間(CHGPF,WAITRCD項(xiàng)可看到),需要讀取的記錄仍被鎖,將會(huì)打開LO指示器,即*IN45=’1’;EQ指示器為是否讀到指示器。當(dāng)未讀到任何記錄時(shí),打開EQ指示器,即*IN46=’1’2.當(dāng)文獻(xiàn)在程序中,是用只讀的方式聲明時(shí),READ操作并不會(huì)導(dǎo)致鎖表;假如文獻(xiàn)在程序中是用修改的方式聲明,READ操作成功后,該記錄被鎖;直到執(zhí)行解鎖操作(UNLOCK,或UPDATE),或READ該文獻(xiàn)的其它記錄,才會(huì)解鎖假如文獻(xiàn)是用修改的方式聲明,但希望READ操作不鎖表時(shí),那么就用READ(N),即Factory1O(jiān)perationFactory2ResultHILOEQREAD(N)文獻(xiàn)記錄格式名4546這樣讀文獻(xiàn),就不會(huì)鎖記錄,但是同時(shí)也不能修改記錄。假如需要修改記錄,那么在修改之前(涉及對文獻(xiàn)字段賦值之前),還必須再對該記錄進(jìn)行一次定位操作(比如CHAIN、READ語句均可)。也就是說,假如要修改記錄,必須先鎖住當(dāng)前記錄(很合理吧)3.當(dāng)執(zhí)行READ操作時(shí),程序是根據(jù)游標(biāo)當(dāng)前在文獻(xiàn)中所指向的位置,順序讀取下一條記錄。關(guān)于游標(biāo)是如何指向,還不是一個(gè)很簡樸的問題,所以將會(huì)在下一章“數(shù)據(jù)庫相關(guān)知識(shí)”中具體講解。4.執(zhí)行READ操作時(shí),允許聲明的文獻(xiàn)沒有鍵值。(即PF文獻(xiàn))READC{(E)}(ReadNextChangedRecord)沒用過,讀下一次修改過的記錄?READE{(N|E)}(ReadEqualKey)讀取鍵值相等的記錄語法與READ操作碼大體同樣,這里不再反復(fù),只說不同的:假設(shè)程序中已聲明邏輯文獻(xiàn)PFFHSL3(鍵值為FHS01+FHS02)Factory1Operat(yī)ionFactory2ResultHILOEQFHSKEYKLISTKFLDFLD01KFLDFLD02FHSKEYSETLLFMTFHSDOW1=1FHSKEYREADEFMTFHS15IF*IN15=’1’LEAVEENDIFENDDO這段話的意思,就是定義組合鍵值FHSKEY,然后根據(jù)這個(gè)FHSKEY在邏輯文獻(xiàn)PFFHSL3中去定位,循環(huán)讀取PFFHSL3中,FHS01、FHS03與FLD01、FLD02相等的記錄。當(dāng)讀取記錄結(jié)束,或鍵值不等時(shí),退出循環(huán)(*IN15是EQ指示器)。假如將READE操作碼換成READ操作碼的話(當(dāng)然,Factory1處也就不能有值),就沒有“鍵值不等時(shí)退出循環(huán)”這一層意思,只是讀不到記錄時(shí)就退出循環(huán),但有時(shí)我們使用邏輯文獻(xiàn),僅僅是需要它的排序,而不需要讀不到鍵值相等的記錄就退出循環(huán)。所以說,使用READ操作碼,還是READE操作碼,需要根據(jù)實(shí)際的規(guī)定來決定。以上的Factory1處填寫值的系統(tǒng)解決,當(dāng)READE操作碼在Factory1處未填寫值時(shí),系統(tǒng)事實(shí)上是將當(dāng)前的值與讀到的上一條記錄的關(guān)鍵字進(jìn)行比較,而不是與SETLL時(shí)的鍵值做比較(讀第一條記錄不做比較!),假如鍵值不等時(shí),置EQ指示器為1。。也就是說,假如沒有與FHSKEY鍵值相同的錄,那么系統(tǒng)并不是直接找開EQ指示器,而是會(huì)一直保持正常地往下讀,直到找到與讀到的第一條記錄關(guān)鍵字不同的記錄,才會(huì)打開EQ指示器,所以要注意。READP{(N|E)}(ReadPriorRecord)讀取記錄—游標(biāo)上移簡樸來說,READ、READE操作時(shí),游標(biāo)在數(shù)據(jù)文獻(xiàn)中,是下移的;即讀完第一條記錄,游標(biāo)指向第二條記錄;讀完第二條記錄,游標(biāo)指向第三條記錄,依此類推,直至最后一條記錄。但READP則正好相反,游標(biāo)是上移的,即讀完第三條記錄后,游標(biāo)指向第二條記錄;讀完第二條記錄后,游標(biāo)指向第一條記錄,直至讀完第一條記錄。一般來說,用READ、READE的概率會(huì)比READP、READPE的概率高得多,但是在某些情況下,使用READP操作,又的確會(huì)很省事,這個(gè)一時(shí)間想不起例子來,大家可在編程序時(shí)多實(shí)踐。READPE{(N|E)}(ReadPriorEqual)雖然我沒用過,但猜想它應(yīng)當(dāng)就是指游標(biāo)上移,按鍵值去讀取文獻(xiàn)。與READP的關(guān)系,就類似于READE與READ的關(guān)系。REALLOC{(E)}(Re-allocateStorage)沒用過REL{(E)}(Release)沒用過RESET{(E)}(Reset)將數(shù)據(jù)結(jié)構(gòu)賦值成為初始值。注意是初始值,不是清空。如定義結(jié)構(gòu):DFHSDSDSDFHS0110INZ(’ABCD’)DFHS025INZ(’EFGH’)那么,不管對該結(jié)構(gòu)如何賦值,當(dāng)執(zhí)行語句:CRESETFHSDS之后,FHS01將會(huì)變成’ABCD,FHS02將會(huì)變成’EFGH’,即恢復(fù)成為初始值。RETURN{(H|M|R)}(ReturntoCaller)RETURN是程序結(jié)束。在前面,“簡樸的程序流程”中,我們講過,“SETONLR”與RETURN這兩句話一起,做為程序的結(jié)束。這里,再具體解釋一下兩者之間的區(qū)別,以及關(guān)系:假如不寫RETURN,只寫“SETONLR”,程序執(zhí)行完最后一句之后,將會(huì)再從第一句開始執(zhí)行,導(dǎo)致死循環(huán)。在簡樸的程序流程這個(gè)例子中,程序本來只想修改讀到的第一條記錄,而假如沒有RETURN的話,將會(huì)把所有的記錄都修改掉,直到最后找不到可修改的記錄,然后系統(tǒng)報(bào)錯(cuò),異常中斷。(這種離奇的現(xiàn)象現(xiàn)在又測試不到了,也許是當(dāng)時(shí)寫錯(cuò)程序了?把F寫成了P?不管它,當(dāng)是我寫錯(cuò)了,總之RETURN是表達(dá)程序結(jié)束,沒有RETURN,主程序無可執(zhí)行的語句時(shí),它也會(huì)結(jié)束;假如RETURN出現(xiàn)在主程序的中間,那么RETURN后面的語句將不會(huì)執(zhí)行)假如只寫RETURN,不打開指示器*INLR,根據(jù)blogliou所說“程序不會(huì)強(qiáng)制將內(nèi)存中的數(shù)據(jù)寫到磁盤中。400缺省的是BLOCK輸出,即數(shù)據(jù)記錄滿一個(gè)BLOCK塊時(shí)才會(huì)將這一組記錄寫到磁盤上。那么假如這時(shí)BLOCK沒滿,數(shù)據(jù)信息不會(huì)立刻寫到磁盤上。之后有其它作業(yè)用到該文獻(xiàn),讀取的數(shù)據(jù)就不完整?!钡偃缥墨I(xiàn)有唯一鍵字,或記錄日記,必須同步寫時(shí),其實(shí)BLOCK實(shí)際被忽略,也就是此時(shí)不會(huì)有錯(cuò)。目前我們用的是MIMIX備份,客戶事實(shí)上將所有的文獻(xiàn)都列入日記,這時(shí)不寫也不會(huì)出現(xiàn)上述錯(cuò)誤。但為避免一些潛在的問題,養(yǎng)成良好的編程風(fēng)格,建議將SETONLR與RETURN一同,做為程序結(jié)束的標(biāo)志。當(dāng)然,假如某個(gè)程序頻繁被調(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)}(RollBack)1.基本語法Factory1O(jiān)perationFactory2ResultROLBK2.該操作碼無其它參數(shù),就是指對事務(wù)解決進(jìn)行回滾操作。3.ILE程序中,ROLBK操作可隨時(shí)進(jìn)行,也允許在沒有聲明COMMIT類型的文獻(xiàn)的情況下,仍進(jìn)行ROLBK操作(對該進(jìn)程這前的事務(wù)進(jìn)行確認(rèn)解決)f4.關(guān)于日記的確認(rèn)回滾操作,在后面會(huì)另設(shè)專門章節(jié)講述。2.8.4.5S--ZSCAN{(E)}(ScanCharacterString)掃描字符串掃描字符或字符串Factory1在目的字符串Factory2中是否存在Factory1OperationFactory2ResultHILOEQFLD01SCANFLD02N26FLD01可以是字符,也可以是字符變量;可以是一位長,也可以是多位長。當(dāng)FLD01在FLD02中存在時(shí),EQ指示器打開,即*IN26=’1’,同時(shí)將FLD02中的起始位置,賦值給N;當(dāng)FLD01在FLD02中不存在時(shí),EQ指示器保持關(guān)閉狀態(tài),即*IN26=’0’,同時(shí)N=0允許從FLD02中的指定位置開始檢查:FLD01SCANFLD02:2N26如上句,即表達(dá)從FLD02的第2位,開始掃描。在實(shí)際使用中,比如說我們判斷某個(gè)字符是否為數(shù)字,就可以先定義一個(gè)0—9的常量,然后將要判斷的字符去SCAN一下這個(gè)常量SELECT(BeginaSelectGroup)分支語句在操作碼“OTHER”中講過,為方便讀者,列出簡樸語法如下:Factory1OperationFactory2ResultHILOEQSELECTWHEN條件判斷1解決語句1WHEN條件判斷2解決語句2OTHER解決語句3ENDSL要注意,SELECT操作碼,必須有相應(yīng)的ENDSL操作碼,否則編譯無法通過。SETGT{(E)}(SetGreaterThan)定位操作—大于舉個(gè)例子吧,假設(shè)文獻(xiàn)中有一個(gè)字段,是標(biāo)記順序號(hào)的,1、2、3、4。即該字段為1,表達(dá)第一條記錄,該字段為2,表達(dá)第2條記錄。那么:Factory1OperationFactory2ResultHILOEQ2SETGT文獻(xiàn)記錄格式名READ文獻(xiàn)記錄格式名這個(gè)READ操作,READ到的,是第3條記錄。也就是說,SETGT操作碼,會(huì)將游標(biāo)定位到大于鍵值的第一條記錄前。在實(shí)際使用中,假如我們是按邏輯文獻(xiàn)讀取,并且讀了一條記錄之后,對其鍵值相同的記錄都不需要再讀取時(shí),就可以用SETGT,但是需要注意,Factory1項(xiàng),需要是與鍵值相同的變量,即假如文獻(xiàn)是使用多個(gè)字段做為鍵值,那么我們也需要先定義一個(gè)組合鍵值的變量,然后Factory1處填寫這個(gè)組合鍵值的變量名。當(dāng)聲明文獻(xiàn)的鍵值有多項(xiàng)時(shí),F(xiàn)actory1項(xiàng)的鍵值,允許小于文獻(xiàn)的鍵值,但順序必須一致。即聲明的文獻(xiàn)假如鍵值為:FHS01、FHS02、FHS03,那么我們在程序中定義三個(gè)類型與之相同的變量FLD01、FLD02、FLD03,以下寫法都是有效的FLDKEYKLISTKFLDFLD01KFLDFLD02KFLDFLD03FLDKEYSETGT文獻(xiàn)記錄格式名FLDKEYKLISTKFLDFLD01KFLDFLD02FLDKEYSETGT文獻(xiàn)記錄格式名FLD01SETLL文獻(xiàn)記錄格式名SETLL{(E)}(SetLowerLimit)定位操作—小于語法與SETGT相同,含義與SETGT不同。SETLL操作碼,會(huì)將游標(biāo)定位到與鍵值相等的第一條記錄之前,仍是上例,假如是2SETLL文獻(xiàn)記錄格式名READ文獻(xiàn)記錄格式名那么READ操作碼讀到的記錄,就是第2條記錄,看到了吧,和SETGT不同。SETLL操作碼還可以用來簡樸判斷當(dāng)前鍵值是否存在有記錄,以PFFHSL3為例(鍵值為FHS01、FHS02)Factory1OperationFactory2ResultHILOEQFHSKEYKLISTKFLDFLD01KFLDFLD02EVALFLD01=’01’EVALFLD02=’02’FHSKEYSETLL文獻(xiàn)記錄格式名44當(dāng)文獻(xiàn)中有相應(yīng)記錄時(shí),EQ指示器打開,即*IN44=’1’當(dāng)文獻(xiàn)中無相應(yīng)記錄時(shí),EQ指示器關(guān)閉,即*IN44=’0’(與CHAIN正好相反,要注意)而在這種用法中,SETLL與CHAIN的區(qū)別在于,CHAIN是定位讀取了記錄,而SETLL僅僅只是判斷該記錄是否存在。所以用SETLL操作,不能修改記錄,也無法取出記錄的值。只能判斷記錄是否存在。假如要修改記錄,或取出記錄的值,還需要有一個(gè)讀取定位的操作,如READ,或READE、READP等(最常用的,應(yīng)當(dāng)就是READ操作)SETOFF(SetIndicat(yī)orOff)關(guān)閉指示器Factory1OperationFactory2ResultHILOEQSETOFF101112等價(jià)于EVAL*IN10=’0’EVAL*IN11=’0’EVAL*IN12=’0’在SETOFF這個(gè)操作碼中,指示器填在HI、LO、EQ哪里都沒關(guān)系,都是表達(dá)要被關(guān)閉的指示器SETON(SetIndicatorOn)打開指示器Factory1OperationFactory2ResultHILOEQSETO(shè)FF101112等價(jià)于EVAL*IN10=’1’EVAL*IN11=’1’EVAL*IN12=’1’在SETON這個(gè)操作碼中,指示器填在HI、LO、EQ哪里都沒關(guān)系,都是表達(dá)要被關(guān)閉的指示器SHTDN(ShutDown)沒用過SORTA(SortanArray)沒用過SQRT{(H)}(SquareRoot)開方Factory1OperationFactory2ResultHILOEQ9SQRT3N這時(shí),N=3(由于3的平方為9)9、3都可以是數(shù)字型變量,或者直接是數(shù)字SUB{(H)}(Subtract)減法操作Factory1OperationFactory2ResultHILOEQFLD01SUBFLD02FLD03SUBFLD02FLD03看過前面的ADD、MULT操作碼,這里不用解釋也應(yīng)當(dāng)明白是什么意思了吧。那就不多說了。SUBDUR{(E)}(SubtractDurat(yī)ion)日期相減1.減日期Factory1OperationFactory2ResultHILOEQFLD01SUBDURN:*YFLD02表達(dá)將日期型變量FLD01減去N年,賦值到日期型變量FLD02中;N可以是一個(gè)數(shù)字型變量,也可以就是一個(gè)數(shù)字,N允許為負(fù)數(shù)*Y,*M,*D(尚有其它的參數(shù)值,可見ADDDUR,其中有具體解釋)2.判斷兩個(gè)日期型變量之間的天/月/年數(shù)Factory1O(jiān)perationFactory2ResultHILOEQFLD01SUBDURFLD02N:*D這時(shí),N做為一結(jié)果變量,表達(dá)日期型變量FLD01與FLD02之間的天數(shù)SUBST{(P|E)}(Substring)取字符/字符串Factory1OperationFactory2ResultHILOEQ2SUBSTFLD01:3FLD02表達(dá)從字段FLD01的第3位開始,?。参唬髮R賦值到字段FLD02中。規(guī)定字段FLD01的長度必須大于或等于3+2位,否則程序會(huì)報(bào)錯(cuò)??梢試L試用%SUBST語句,也是等價(jià)的,如下EVALFLD02=%SUBST(FLD01:3:2)表達(dá)的是同樣的意思。起始位數(shù)3,取的長度2,在兩種寫法之下,都可以使用數(shù)字型變量來表達(dá)。相比較之下,%SUBST尚有一種用法,就是對字符的指定位置賦值,這個(gè)就厲害了:EVAL%SUBST(FLD02:3:2)=’01’看到了吧,這句話就是說,使字段FLD02的第3、4位(即從第三位開始,兩位長)等于“01”TAG(Tag)定義標(biāo)簽,與GOTO(shè)同用Factory1Operat(yī)ionFactory2ResultHILOEQFHSTAGTAGTEST{(D|T|Z|E)}(TestDat(yī)e/Time/Timestamp)沒用過TESTB(TestBit)沒用過TESTN(TestNumeric)沒用過TESTZ(TestZone)沒用過TIME(TimeofDay)--取當(dāng)前系統(tǒng)時(shí)間Factory1Operat(yī)ionFactory2ResultHILOEQTIMEFLD01FLD01可以是時(shí)間型或數(shù)字型變量UNLOCK{(E)}(UnlockaDataAreaorReleaseaRecord)解鎖Factory1O(jiān)perationFactory2ResultHILOEQUNLOCK文獻(xiàn)記錄格式名UNLOCK是解鎖操作,在某種限度上,可以將UNLOCK視為ROLBK,將UPDATE視為COMMIT。即假如鎖定某條記錄,并對其字段進(jìn)行賦值之后,使用UPDATE語句,將會(huì)把修改后的結(jié)果保存下來,即修改文獻(xiàn),而UNLOCK語句則不會(huì)修改文獻(xiàn),即否認(rèn)了之前對文獻(xiàn)字段做的賦值修改。從程序的執(zhí)行效率上來講,UNLOCK的執(zhí)行效率是高于UPDATE的,由于UPDATE操作時(shí),系統(tǒng)需要對文獻(xiàn)的每一個(gè)字段進(jìn)行確認(rèn)解決(DEBUG時(shí)可以看到),而UNLOCK就是簡樸的解鎖而已。UPDATE(ModifyExistingRecord)修改記錄語法與UNLOCK同樣。這里需要說明一下,在執(zhí)行UPDATE的時(shí)候,必須先使用READ、CHAIN等操作碼鎖定一條記錄。假如未鎖住記錄,UPDATE操作碼將會(huì)報(bào)錯(cuò)。當(dāng)執(zhí)行了UNLOCK、UPDATE、以及ROLBK語句時(shí),等于是解鎖,此時(shí)再執(zhí)行UPDATE操作碼之前,必須再次鎖住記錄操作;WHEN{(M|R)}(When)分支判斷語句中的條件判斷在操作碼“OTHER”,“SELECT”中都講過,仍列出簡樸語法如下:Factory1O(jiān)perationFactory2ResultHILOEQSELECTWHEN條件判斷1解決語句1WHEN條件判斷2解決語句2OTHER解決語句3ENDSLWHENxx(WhenTrueThenSelect)上面的語法,是RPGLE的語法,WHENxx是RPG的語法,也就是SELECTFLD01WHENEQFLD02解決語句1……..這樣的語法,在表達(dá)復(fù)雜的邏輯關(guān)系時(shí),必須與ANDxx,ORxx一起使用,所以我不使用WHENxx這個(gè)操作碼。WRITE(CreateNewRecords)寫記錄常用的方式:Factory1OperationFactory2ResultHILOEQCLEAR文獻(xiàn)記錄格式名EVAL文獻(xiàn)字段1=xxxxEVAL文獻(xiàn)字段2=xxxxWRITE文獻(xiàn)記錄格式名表達(dá)在文獻(xiàn)中寫入一條新記錄。文獻(xiàn)需要聲明為可寫的。通常會(huì)在給文獻(xiàn)字段賦值之前,作一次CLEAR操作來進(jìn)行初始化,以避免不必要的麻煩。XFOOT{(H)}(SumtheElementsofanArray)沒用過,看幫助,是表達(dá)對數(shù)組字段的累加記錄。假設(shè)DIMDATA定義為一個(gè)數(shù)字型的數(shù)組變量,F(xiàn)HS01為一個(gè)足夠大的數(shù)字型變量Factory1OperationFactory2ResultHILOEQXFOOTDIMDATAFHS01就表達(dá)將數(shù)組DIMDATA中的所有記錄的值都取出來,匯總相加,賦值到數(shù)字變量FHS01中XLATE{(P|E)}(Translate)將一個(gè)字符串中指定的字符,更換成此外的字符。舉例:如MYCHAR1,MYCHAR2都是兩個(gè)20位長的字符型變量CMOVEL'ABCAAAC123'MYCHAR1C'A':'9'XLATEMYCHAR1MYCHAR2執(zhí)行過這個(gè)語句之后,MYCHAR2就等于”9BC999C123’,即將字符串MYCHAR1中所有的“A”都變成了“9”;XLATE也也許指定起始位置。如上句更改為:C'A':'9'XLATEMYCHAR1:4MYCHAR2則MYCHAR2等于“ABC999C123”,指從第4位開始(含第4位),將“A”變成“9”賦值。Z-ADD{(H)}(ZeroandAdd)向數(shù)字型變量賦值Factory1OperationFactory2ResultHILOEQZ-ADDFLD01FLD02將數(shù)字型變量FLD01,賦值到數(shù)字型變量FLD02中。Z-ADD、MOVE雖然同是賦值操作碼,但Z-ADD的用法就遠(yuǎn)沒有MOVE那么變化多端,只能在數(shù)字型變量之間賦值。所以也沒有什么可說的了。zero

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論