




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
20用法ile rpg例子變量聲明1、 整數(shù) (i(整數(shù))、b(二進(jìn)制)、s(區(qū)位十進(jìn)制)、p(壓縮十進(jìn)制)i(整數(shù))只可為3、5、10、20個字節(jié)長。dpos1 s 5i 0 inz(*zero)dpos2 s 10i 0 inz(*zero)dpos3 s 3i 0 inz(*zero)dpos4 s 20i 0 inz(*zero)注意s(區(qū)位十進(jìn)制)dpos5 s 16s 0 inz(*zero)2、 浮點數(shù)只能定義為4字節(jié)和8字節(jié)df1 s 4f inz(*zero)df2 s 8f inz(*zero)c eval f2=121212.12121212c f2 dsply c eval f1=121212.12121212c f1 dsply 注意在小數(shù)點位數(shù)必須為blank。8字節(jié)相當(dāng)于doubledsply +1.212121212121200e+0054字節(jié)相當(dāng)于floatdsply +1.2121212e+053、 字符串da s 30a inz(*blank)a 單字節(jié)或多字節(jié)n 指示符,單字節(jié)4、 數(shù)組這里只說明運(yùn)行時數(shù)組darray s 2s 0 dim(12)引用array(下標(biāo)),下標(biāo)從1開始。dcharr s 5a dim(12)5、 基指針基指針必須為4字節(jié),且必須與 4 字節(jié)邊界對齊。6、 結(jié)構(gòu)D ParmDS DS 1024D SFld1 5 0D SFld2 200D C *ENTRY PListC Parm ParmDSC* 這是我們經(jīng)常使用的一種結(jié)構(gòu)定義方式和使用方式,這種用于傳遞入口參數(shù)的數(shù)據(jù)結(jié)構(gòu),一定不能使用INZ關(guān)鍵字。C* 但是,如果該結(jié)構(gòu)不是作為程序入口參數(shù)或是作為下級調(diào)用的接口參數(shù),一般要在工程中約定使用INZ關(guān)鍵字。INZ關(guān)鍵字會讓系統(tǒng)在程序被激活時,自動按結(jié)C* 構(gòu)各子字段的類型自動初始化,否則上述結(jié)構(gòu)中SFld1字段的值將是一個非法的空格值而不是數(shù)字零。Dmystru ds D name 20a D age 3s 0D memo 44a D addr 1 20a D tel1 21 32a D tel2 33 42a 或Dmystru ds 68 D name 20a D age 3s 0 D memo 44a D addr 20a overlay(memo:1) D tel1 12a overlay(memo:21)D tel2 12a overlay(memo:33)或Dmystru ds D name 20a D age 3s 0 D memo 44a D addr 20a overlay(memo) D tel1 12a overlay(memo:*next) D tel2 12a overlay(memo:*next) D other 12a 多重數(shù)據(jù)結(jié)構(gòu)及使用Dmystru ds occurs(10) inz D name 20a D age 3s 0 D memo 44a D addr 20a overlay(memo) D tel1 12a overlay(memo:*next)D tel2 12a overlay(memo:*next)D other 12a Dcnt s 2s 0 inz(*zero) C*給第一個mystru賦值 C 1 occur mystru C eval name= 高殿華 C eval age=30 C eval addr= 河北省吳橋縣 C eval tel1C eval tel2=03177348792 C eval other=12121212 C*給第二個mystru賦值C 2 occur mystru C*等同于C eval %occur(mystru)=2C eval name= 高殿華 C eval age=30 C eval addr= 河北省吳橋縣 1111 C eval tel1C eval tel2=03177348792 C eval other=12121212 C*依次訪問每個數(shù)組元素C for cnt=1 to 2 C cnt occur mystru C addr dsply C endfor 外部描述數(shù)據(jù)結(jié)構(gòu)D DSName E DS EXTNAME(FileName) INZExtname(filename:fmtname) 關(guān)鍵字用來引用filename中的記錄格式,如未制定記錄格式名,則默認(rèn)第一個記錄格式名。文件狀態(tài)數(shù)據(jù)結(jié)構(gòu)F FileName CF E WORKSTN INFDS(FileDS)D FileDS DSD FileSt *STATUS數(shù)據(jù)域數(shù)據(jù)類型包括*CHAR,*DEC和*LGL三種。如果指定因子2,則它必須包含正在引用的OS/400 數(shù)據(jù)區(qū)。若未指定因子2,則將結(jié)果字段用作數(shù)據(jù)區(qū)名稱。結(jié)果字段必須包含字段、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)子字段或數(shù)據(jù)區(qū)數(shù)據(jù)結(jié)構(gòu)。這與為檢索因子 2 中指定數(shù)據(jù)區(qū)中的數(shù)據(jù)并將數(shù)據(jù)寫至此數(shù)據(jù)區(qū),而與 IN 和 OUT 操作一起使用的名稱同名。在結(jié)果字段中指定數(shù)據(jù)區(qū)數(shù)據(jù)結(jié)構(gòu)時,VisualAge RPG 應(yīng)用程序在程序開始時檢索數(shù)據(jù)區(qū)中的數(shù)據(jù),并在程序結(jié)束時將數(shù)據(jù)寫至數(shù)據(jù)區(qū)。1 本地數(shù)據(jù)域*LDA2 程序初始化參數(shù)數(shù)據(jù)域 *PDA3 外部描述數(shù)據(jù)域例子1、Dst_buf ds 60 inz D name 30 D addr 30 C *DTAARA DEFINE dataarea st_bufC*鎖定數(shù)據(jù)區(qū)dataare,讀取信息到st_buf中,并顯示,然后賦于新值C *LOCK IN st_buf C name DSPLY C addr DSPLY C eval name=gaodianhuaC eval addr=wuqiao C OUT st_buf C UNLOCK st_buf C EVAL *INLR=1 C RETURN 例子2:D INFO S 60AC*數(shù)據(jù)區(qū)名稱為:dataarea C *DTAARA DEFINE dataarea INFOC*鎖定數(shù)據(jù)區(qū),讀取信息到INFO中,并顯示,然后賦值于GAODIANHUAC *LOCK IN INFO C INFO DSPLY C EVAL INFO=GAODIANHUAC OUT INFO C UNLOCK INFO C EVAL *INLR=1 C RETURN IN :讀數(shù)據(jù)區(qū),當(dāng)因子1是*LOCK時,則設(shè)置了讀鎖,不允許更新。OUT:寫入數(shù)據(jù)區(qū),當(dāng)因子1是*LOCK時, 寫操作后數(shù)據(jù)區(qū)保持鎖定狀態(tài),當(dāng)因子1為BLANK時, 數(shù)據(jù)區(qū)更新后解鎖。UNLOCK:對IN或OUT鎖定的數(shù)據(jù)區(qū)解鎖.7、 常量十六進(jìn)制文字的格式是:xx1x2.xn xx1x2.xn必須包含字符 a-f、a-f 和 0-9。日期文字的格式為 dxxxxxx,其中:d 指示文字是日期類型的 xxxxxx 是有效日期,其格式為控制規(guī)范上指定的格式 xxxxxx 包圍在單引號()中。時間文字的格式為 txxxxxx,其中:t 指示該文字是時間類型的 xxxxxx 是有效時間,其格式為控制規(guī)范上指定的格式 xxxxxx 包圍在單引號()中。時間戳記文字的格式為 zyyyy-mm-dd-hh.mm.ss.mmmmmm,其中:z 指示該文字是時間戳記類型的 yyyy-mm-dd 是有效日期(年-月-日) hh.mm.ss.mmmmmm 是有效時間(小時.分鐘.秒.毫秒) yyyy-mm-dd-hh.mm.ss.mmmmmm 括在單引號中 毫秒是可選的,若未指定,則缺省為 0命名常量:可以代constd upper c abcdefghijklmnopqrstuvwxyzd lower c const(abcdefghijklmnopqrstuvwxyz)象征常數(shù):*allx.,*allgk1k2,*alluxxxxyyyy,*allxx1.,*blank/*blanks,*hival,*loval, *null, *on/*off ,*zero/*zeros循環(huán)dcount s 3s 0 inz(*zero)dsum s 5s 0 inz(*zero)1.forc for count=0 to 100 c eval sum=sum+count c endfor c sum dsply c eval *inlr=1 c return 2.dowc eval count=0 c eval sum=0 c dow count100 c eval sum=sum+countc eval count=count+1c enddo c sum dsply 中斷l(xiāng)eave 進(jìn)行下一次循環(huán)iter選擇結(jié)構(gòu)c if not (sum=5049 and count=100)c 10000 dsply c elseif sum = 5049 c 10001 dsply c elseif sum = 5051 c 10002 dsply c else c 10003 dsplyc*實現(xiàn)了嵌套c if sum=5050 c 10004 dsply c if sum 5049 c 10005 dsply c else c 10006 dsply c endif c else c 10007 dsply c endif c*實現(xiàn)了組選擇c select c when sum=5051 c hhhh dsply c when sum=5050 c oooo dsply c other c pppp dsply c endsl 跳轉(zhuǎn)語句gotoc goto tag1cc tag1 tagc.邏輯運(yùn)算andor not算數(shù)運(yùn)算+-*/%rem() /*例子見后面*/關(guān)系運(yùn)算=*函數(shù)及原型的概念1、 主過程 EXAM10的源碼Dvar1 s 10s 0 Dvar2 s 10s 0 Dresult s 15s 0 C *entry plist C parm var1 C parm var2 C parm result C eval result=var1+var2 C eval *inlr=1 C return 主過程由F、D、I、C、O規(guī)范表組成,使用*ENTRY PLIST語句指定模塊入口參數(shù)。如果在控制表上沒有標(biāo)定NOMAIN關(guān)鍵字,模塊入口參數(shù)還可以被指定為目標(biāo)程序的入口參數(shù),使用CALL或CALLB操作碼來調(diào)用。Dvar1 s 10s 0 Dvar2 s 10s 0 Dresult s 15s 0 C eval var1=100 C eval var2=200 C call EXAM10 C parm var1 C parm var2 C parm result C result dsply C eval *inlr=1 C return 2、子過程(1)、有返回值,在調(diào)用時當(dāng)作函數(shù)使用原型說明庫名:hbrccu文件:exam成員:aaaaDresult s 10i 0 inz(*zero) Da s 10i 0 Db s 10i 0 D*原型說明Dfunction pr 10i 0 Da 10i 0 value Db 10i 0 value C eval a=10 C eval b=10 C*有返回值,當(dāng)作函數(shù)使用 C eval result=function(a:b) C result dsply C EVAL *INLR=*ON C RETURN 庫名:hbrccu文件:exam成員:bbbbHnomainD*原型說明(加粗部分為過程或函數(shù)的返回值說明,也可以沒有返回值) Dfunction pr 10i 0 Da 10i 0 value Db 10i 0 value Dresult s 10i 0 D*子過程接口的定義(加粗部分表明可以被外部程序調(diào)用)Pfunction B export Dfunction pi 10i 0 Da 10i 0 value Db 10i 0 value C eval result=a+b C return result Pfunction E開始編譯:CRTRPGMOD MODULE(HBRCCU/FUNC1) SRCFILE(HBRCCU/EXAM) SRCMBR(BBBB)CRTRPGMOD MODULE(HBRCCU/MAIN) SRCFILE(HBRCCU/EXAM) SRCMBR(AAAA)CRTPGM PGM(HBRCCU/FUNCTION) MODULE(HBRCCU/MAIN HBRCCU/FUNC1) 編譯完成。(2)、沒有返回值,使用CALLP調(diào)用(注意加粗部分的調(diào)用)庫名:hbrccu文件:exam成員:aaaaDresult s 10i 0 inz(*zero) Da s 10i 0 Db s 10i 0 Dfunction pr Da 10i 0 value Db 10i 0 value Dresult 10i 0 C eval a=10 C eval b=10 C callp function(a:b:result)C result dsply C EVAL *INLR=*ON C RETURN 庫名:hbrccu文件:exam成員:aaaaHnomain Dfunction pr Da 10i 0 value Db 10i 0 value Dresult 10i 0 Pfunction B export Dfunction pi Da 10i 0 value Db 10i 0 value Dresult 10i 0 C eval result=a+b C return Pfunction E 運(yùn)行function后顯示20.注意:(1)在加粗斜體部分,如果改成如下:Dresult 10i 0 value 則表明是值傳遞,在function中調(diào)用改變不影響其外部的值。運(yùn)行后顯示0. 注意value是值傳遞。(2)export 表明定義的這個子過程可以被外部調(diào)用。假如沒有export關(guān)鍵字,在執(zhí)行CRTPGM PGM(HBRCCU/FUNCTION) MODULE(HBRCCU/MAIN HBRCCU/FUNC1) 報錯。 算數(shù)函數(shù)或操作碼1、 addcl0n01factor1+opcode&extfactor2+result+len+d+hiloeqc 1 add sum sum c sum dsply c*相當(dāng)于cl0n01factor1+opcode&extfactor2+result+len+d+hiloeqc eval sumsum1c sum dsply 2、subc sum sub 1 sum c sum dsply c*相當(dāng)于c eval sum=sum-1c sum dsply3、multc 3 mult 2 sumc sum dsply c*相當(dāng)于c eval sum=3*2c sum dsply4、divc 12 div 3 sumc sum dsply c*相當(dāng)于c eval sum=12/3c sum dsply5、%rem()取余c eval count=%rem(13:3)c count dsply c*相當(dāng)于c 14 div 3 sum c mvr countc count dsplyc*注意:mvr只能用在div操作碼的后面,不能用在eval sum=14/3的后面,編譯報錯6、move和movelMove 自右向左取值賦值給int,并右靠齊Movel 自左向右取值賦值給int,并左靠齊Dchar1 s 1a inz(*blank) Dint s 2s 0 inz(*zero ) C eval char1 = 1 C movel char1 int C int dsply C eval *inlr=1 C return 此時字符串實際長度小于數(shù)字長度,movel時,此時int顯示DSPLY 10Dchar1 s 1a inz(*blank) Dint s 2s 0 inz(*zero ) C eval char1 = 1 C move char1 int C int dsply C eval *inlr=1 C return 此時字符串實際長度小于數(shù)字長度,move時,此時int顯示DSPLY 1Dchar1 s 2a inz(*blank) Dint s 2s 0 inz(*zero ) C eval char1 = 12 C move char1 int C int dsply C eval *inlr=1 C return 此時字符串實際長度等于數(shù)字長度,movel和move時,此時int都顯示DSPLY 12Dchar1 s 3a inz(*blank) Dint s 2s 0 inz(*zero ) C eval char1 = 123 C movel char1 int C int dsply C eval *inlr=1 C return 此時字符串實際長度大于數(shù)字長度,movel時,此時int顯示DSPLY 12move時,此時int顯示DSPLY 23當(dāng)int向char移動時也遵循這個結(jié)果.函數(shù)比較一、 字符函數(shù)da s 30a inz(*blank)db s 20a inz(*blank)dc s 50a inz(*blank)1、 字符串連接c eval a=gaodianhua c eval b= is a good boy c eval c=a+b c c dsply c*c的值dsply為 gaodianhua is a good boy c eval a=%trim(a)+%trimr(b)c a dsplyc*c的值dsply為 gaodianhua is a good boy 2、 掃描字符串c eval pos=%scan(oo:a:1)c if pos = 0 c not found dsply c else c pos dsply c endif 3、 %check(comparator:base:start) : 在base串中查找第一個不在comparator中存在的字符的位置,如果base中的所有字符均在comparator中存在,則返回0。%checkr(comparator:base:start):在base串中查找最后一個不在comparator中存在的字符的位置,如果base中的所有的字符均在comprator中存在,則返回0。4、%SUBST(字符串:開始位置:長度)返回自變量字符串的一部分。它也可用作帶 EVAL 操作碼的賦值的結(jié)果5、%STR(基指針:最大長度)(右邊)%STR(基指針:最大長度)(左邊)%alloc(number)Dealloc ptr1%realloc(ptr:number)Number必須是不帶小數(shù)的非浮點數(shù)。%STR既可以用來獲取以 NULL 結(jié)束的字符串(
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化妝學(xué)校合同范本
- 包車居間服務(wù)合同范本
- 鄉(xiāng)村園林出售合同范本
- 別墅大門購買合同范本
- 醫(yī)療旅行合同范本
- 倉庫分租協(xié)議合同范例
- 分包非標(biāo)工程合同范本
- 勞動配送合同范本
- 上牌購車合同范本
- 公寓欄桿維修合同范本
- 2024 河北公務(wù)員考試(筆試、省直、A類、C類)4套真題及答案
- 廈門2025年福建廈門市公安文職人員服務(wù)中心招聘17人筆試歷年參考題庫附帶答案詳解
- 2025年高三歷史教學(xué)工作計劃
- 《職業(yè)性肌肉骨骼疾患的工效學(xué)預(yù)防指南 》
- 不同產(chǎn)地筠連紅茶風(fēng)味化學(xué)成分差異分析
- DB50 577-2015 汽車整車制造表面涂裝大氣污染物排放標(biāo)準(zhǔn)
- 生態(tài)安全課件
- 消防風(fēng)道風(fēng)管施工方案
- 大學(xué)英語(西安歐亞學(xué)院)知到智慧樹章節(jié)測試課后答案2024年秋西安歐亞學(xué)院
- 人教版高中英語挖掘文本深度學(xué)習(xí)-選修四-UNIT-2-(答案版)
- 八下冀教版英語單詞表
評論
0/150
提交評論