

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基本語法、 COBOL 基本語法cobol 的書寫格式 ( 每行)1、前 6 列為序號(hào)區(qū) (一般不編輯 )2、第 7 列為標(biāo)示列,僅可以寫如下幾個(gè)標(biāo)示符。a.“ ” 注釋符 (注釋當(dāng)前行的代碼 ) b “ “ 字符串連接符3、第 8 列 -11 列為 A 區(qū),包括以下內(nèi)容。a 部、節(jié)名。b 層號(hào) 014、第 12 列 -72 列為 B 區(qū),過程部的程序必須寫在 B 區(qū)中。5、第 72 以后部分不能編輯。cobol 的語法結(jié)構(gòu) ( 幾大部分 )1、 標(biāo)示部 (IDENTIFICATION DIVISION): 提供程序的一般性文檔說明2、 環(huán)境部 (ENVIRONMENT DIVISION):
2、提供程序外部有關(guān)的項(xiàng)目。a. 配置節(jié) (CONFIGURATION SECTION). 指定源計(jì)算機(jī) (SOURCE-COMPUTE). 目標(biāo)計(jì)算機(jī) (OBJECT-COMPUTE).b.輸入輸出節(jié) (INPUT-OUTPUT SECTION). 文件的物理路徑的定義。方法二 :(過程部中動(dòng)態(tài)指定文件 )SELECT FILE-LOG ASSIGN TOSELECT-FILEORGANIZATION IS LINE SEQUENTIAL .在數(shù)據(jù)部定義字符串變量SELECT-FILE,在文件FILE-LOG打開前動(dòng)態(tài)指定文件路徑。3、數(shù)據(jù)部(DATA DIVISION)。程序中的變量都在數(shù)據(jù)部
3、中定義,Cobol中沒有全局變量和局部之分。 ( 變量的類型結(jié)構(gòu)參照a.文件節(jié)(FILE SECTION)給環(huán)境部定義的文件指定一個(gè)RECORD變量,讀寫文件用:FD FILE-LOG.01 RECORD-LOG PIC X(2000).b.工作存儲(chǔ)節(jié)定義程序中用到的臨時(shí)變量。5.變量類型 )a) COBOL變量定義需要加層號(hào)(表示層次關(guān)系),?層號(hào)從01開始如: 01 I PIC X(10).? 組合項(xiàng)如: 01 WORK-AREA.05 NUM-1 PIC 9(09).b)層號(hào)依次排列順序?yàn)椋?1 ,05,10,15,20,30.c.連接節(jié)子程序的參數(shù)的定義。4、過程部(PROCEDURE
4、 DIVISION)程序的主體:程序的邏輯運(yùn)算在此操作。a、每個(gè)程序分為四大節(jié)(模塊),?前處理(初始化變量,設(shè)定初始值等)-主處理(程序業(yè)務(wù)處理部分)-后處理(程序正常結(jié)束時(shí)的岀口)-錯(cuò)誤處理(程序異常結(jié)束時(shí)的岀口)b、 對(duì)于子程序,PROCEDURE DIVISION 后應(yīng)列岀 LINK 節(jié)中定義的參數(shù)。女口:PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA.c、 程序結(jié)束。-主程序 STOP RUN.-子程序 GO BACK.5、變量類型a字符串型01 STRING-APIC X(100).100個(gè)字符長的變量,程序可以局
5、部操作一個(gè)變量(STRING-A(sta比length)女口:MOVE ALL X”TO STRING-A(2:10)(將變量STRING-A第2位開始10長度的內(nèi)容全賦為” X字符)b數(shù)值型種類類型說明備注DISPLAY9(m)無符號(hào)整數(shù),每位占用一個(gè)字節(jié),顯示或輸岀到文件時(shí),為零的數(shù)位 顯示”0(1=m =18)例如:01 IPIC 9(8).變量1占用8個(gè)字節(jié)。I = 1時(shí),輸出顯示時(shí)為0000000105 STR-1PIC X(10).COBOL程序的基本變量類型分為兩大類字符串型(X)、數(shù)值型(9)S9(m)帶符號(hào)整數(shù),每位占用一個(gè)字節(jié),符號(hào)位不占位,顯示時(shí),為零的數(shù) 位顯 示”,符
6、號(hào)顯示在最后,輸岀 到文件時(shí), 為零的數(shù)位顯示”,符號(hào)丟失。(1=m =18)例如:01 IPIC 9(8).變量1占用8個(gè)字節(jié)。I = 1時(shí),顯示時(shí)為00000001 +輸出到文件時(shí)為00000001DISPLAY9(m)V9( n)無符號(hào)小數(shù)(小數(shù)點(diǎn)不顯示, 不占位)每位 占用一個(gè)字節(jié),顯示或輸岀到 文件時(shí),為零 的數(shù)位顯示”0(1=m + n =18)例如:01 IPIC 9(4)V9(2).變量1占用6個(gè)字節(jié),整數(shù)位4位,小數(shù) 位2位。I = 1.1時(shí),輸出顯示時(shí)為000110S9(m)V9( n)帶符號(hào)小數(shù)(小數(shù)點(diǎn)不顯示,不占位)每位 占用一個(gè)字節(jié),符號(hào)位不占位,顯示時(shí),為零的數(shù)位顯
7、示” ”符號(hào) 顯示在最后,輸岀到 文件時(shí),為零 的數(shù)位顯示” ”,符號(hào)丟 失。(1=m + n =18)例如:01 IPIC 9(4)V9(2).變量1占用6個(gè)字節(jié),整數(shù)位4位,小數(shù) 位2位。I = 1.1時(shí),顯示時(shí)為000110+輸出到文件時(shí)為000110Comp,comp-5,comp-39(m) comp-5無符號(hào)整數(shù),數(shù)據(jù)以二進(jìn)制方式存貯,顯示和9(m)一樣,不能出力(1= m =18)S9(m) comp-5有符號(hào)整數(shù),數(shù)據(jù)以二進(jìn)制方式存 貯,顯 示和S9(m)類似,只是符號(hào) 在前面,不能 出力,(1= m = 18)9(m)v9(n) comp-5無符號(hào)小數(shù),數(shù)據(jù)以二進(jìn)制方式存 貯
8、,顯示和9(m)v9(n)樣,不能 岀力(1= m + n =18)S9(m)v9(n) comp-5有符號(hào)整數(shù),數(shù)據(jù)以二進(jìn)制方式存貯,顯示和S9(m)v9(n)類似,只疋符號(hào)在前面,不能岀力,(1= m + n 大于小于=等于=NOT =不等于注:判斷字符串能否轉(zhuǎn)換為數(shù)字。NUMERICNOT NUMERICIS NOT NUMERIC11、PERFORM語句PERFORM XXX-RTN.?調(diào)用子節(jié),直到遇到第一個(gè)只包含EXIT語句的段中止,回到該調(diào)用語句的下一條語句EXIT只與它搭配有效。所以節(jié)的定義規(guī)定如下:XXX-RTNSECTION.語句塊.XXX-EXT.EXIT.PERFORM
9、 XXX-RTN N TIMES.?循環(huán)調(diào)用子節(jié)N次PERFORM XXX-RTN UNTIL N 30.?循環(huán)調(diào)用子節(jié),直到N大于30。PERFORM UNTIL表達(dá)式語句WHENOTHER.END-EVALUATE?ANY:任何變量、常量值 ?TRUE、FALSE:關(guān)系表達(dá)式的結(jié)果?循環(huán)調(diào)用語句塊,表達(dá)式判斷在語句塊前進(jìn)行。PERFORMVARY INGX語句.END-PERFORM.FROM A BY B UNTIL X 12EVALUATEWHEN變量、常量、表達(dá)式ANYTRUEFALSE(NOT)常量1THRU (THROUGH)常量2END-PERFORM.?循環(huán)調(diào)用語句塊12、E
10、VALUATE,相當(dāng)于FOR循環(huán) 語句口朮兒基本語法(NOT)常量1 THRU (THROUGH)常量2:值(不)在常量1和常量2構(gòu)成的閉區(qū)間 另外,在WHEN后面可 以包含簡單的關(guān)系表達(dá)式。如:EVALUATE A WHEN = 10EVALUATE BWHEN = 1 OR = 2 OR = 3語句??WHEN OTHER語句??END-EVALUATEWHEN OTHER語句??END-EVALUATE.13、另外,不同的COBOL系統(tǒng)提供了不同內(nèi)部函數(shù),建議少用內(nèi)部函數(shù),以下提供幾個(gè)通用的內(nèi)部函數(shù)?ORD取得字符的ASICII碼如:二、PRO*COBOLCOMPLA使用的PRO*COB
11、OL是ORACLE公司提供的在 基本語法COBOL程序中嵌入SQL語句的一種方法,使得程序方 便地訪問操作ORACLE數(shù)據(jù)庫;PRO*COBOL程序經(jīng)過ORACLE提供的預(yù)編譯器預(yù)編譯生成中間COBOL程序后,程 序中所有的SQL語 句直接調(diào)用ORACLE庫函數(shù), 再經(jīng)過COBOL編譯器同一般COBOL程序一樣編譯生成各種可執(zhí)行模 塊,由于程序中直接調(diào)用ORACLE庫 函數(shù),所以它們?cè)L問操作ORACLE數(shù)據(jù)庫的速度很快,基本語法如下、特點(diǎn)所有的SQL或數(shù)據(jù)庫操作相關(guān)語句均被括在 ”EXEC SQL”和 “END-EXEC”之間,并且它們只能包含一條語 句,如:EXEC SQLSQL語句MOVE
12、 FUNCTION ORD (“A”)UPPER-CASE字母小寫轉(zhuǎn)換成大寫 如:MOVE FUNCTIONUPPER-CASE (STRING(START:1) LOWER -CASE字母小寫轉(zhuǎn) 換 成大 寫 如 :MOVE FUNCTION LOWER-CASE (STRING(START:1)REVERSE對(duì)字符串中所有字符進(jìn)行倒序 如:MOVE FUNCTIONREVERSE(STRING-1) LENGTH取得變 量 的 定 義 長 度 , 如 :COMPUTE LEN = FUNCTIONLENGTH(STRING)TO NUMBER.TO STRING(START:1)TO ST
13、RING(START:1)TO STRINGEXEC SQL INCLUDE ORACAEND-EXEC.END-EXEC.? 所有訪問操作數(shù)據(jù)庫的變量都必須是主變量。?“EXEC SQL”,”END-EXEC 及其包含的語句都必須從12列或12列以后開始三、 數(shù)據(jù)部內(nèi)容。?引用兩個(gè)對(duì)象SQLCA, ORACA.EXEC SQL INCLUDE SQLCA END-EXEC.VARCHA型變量(可變長度)該變量定義就是在X型變量后加關(guān)鍵字VARYING如:05 STRINGPIC X(100)VARYING.它實(shí)際包含兩部分(預(yù)編譯后的中間COBO程序可見)05 STRING.06 STRIN
14、G-LEN PIC S9(4)COMP.06 STRING-ARR PIC X(100).STRING-LEN表示字符串的實(shí)際長度,STRING-ARR表示字符串的實(shí)際內(nèi)容。SQL語句中,只能用STRING.從表中得到值時(shí),STRING-LEN自動(dòng)被賦值。向表中寫入值時(shí),STRING-LEN需要手工指定長度,SQL將STRING(1:STRING-LEN部分有效字符串寫到表中。 定義主變 量時(shí),引用COPY句: EXEC SQL INCLUDE WSITIIOl.cpy END-EXEC.? 游標(biāo)的定義可以放在數(shù)據(jù)中。四、數(shù)據(jù)部中SQL語句的基本語法1)、錯(cuò)誤撲獲ORACLE錯(cuò)誤撲獲是一個(gè)全局
15、性的標(biāo)志,在一個(gè)事務(wù)(在PRO*COBO中,ORACLE務(wù)以COMMI或ROLLBACKS分割點(diǎn))中,后一個(gè)錯(cuò)誤撲獲會(huì)覆蓋前一個(gè)錯(cuò)誤撲獲設(shè)置。?遇至U SQL警告(SQLCODE 0)繼續(xù)EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.? 遇至U SQL錯(cuò)誤(SQLCODE 0)繼續(xù)EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.? 遇至U SQL錯(cuò)誤(SQLCODE 0)跳轉(zhuǎn)EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.? 主變量定義。EXEC SQ
16、L BEGIN DECLARE SECTION END-EXEC.主變量定義開始)EXEC SQL END DECLARE SECTION END-EXEC.主變量定義結(jié)束)主變量都必須定義在這里,具體定義和一般的COBO變量一樣2)、數(shù)據(jù)連接數(shù)據(jù)庫連接在一般的項(xiàng)目開發(fā)中用不到,只用于測試程序中(不連接外部數(shù)據(jù)庫)?方式一(USERNAM和PASSWOF分開,女口:USERNAME“=OPS$LAPROC51 PASSWORD=“LAPROC)EXEC SQLCONNECT :USERNAME IDENTIFIED BY :PASSWDEND-EXEC.?方式二(USERNAM和PASSWOR
17、D并,女口:UID =“OPS$LAPROC51/LAPR”CEXEC SQLCONNECT :UIDEND-EXEC.3)、 靜態(tài)SQL語句? 單條記錄的檢索EXEC SQLSELECT ENAME, SAL, COMMINTO :EMP-NAME, :SALARY, :COMMISSION:COMM-INDFROM EMPWHERE EMPNO = :EMP-NUMBEREND-EXEC.注:上例中的COMM-IN為指示變量,在檢索操作中每個(gè)接受主變量都可指定一個(gè)指示變量用來判斷主變量是不是接受到一個(gè)空值(NULL)(主變量不能接受空值),當(dāng)指示變量為 量應(yīng)該接受到一個(gè)空值(主變量自己表示
18、不出來)? 多條記錄的檢索(CURSORS標(biāo))? 游標(biāo)的定義EXEC SQLDECLARE CUR_NAME CURSOR FORSELECT MSG_CD,MSG_1,MSG_2FROM WWWTMSG1END-EXEC.游標(biāo)的定義:將SQL查詢語句聲明為一個(gè)游標(biāo),不調(diào)用ORACL庫函數(shù),不會(huì)更新? 游標(biāo)的打開EXEC SQLOPEN CUR_NAMEEND-EXEC.游標(biāo)的打開:用游標(biāo)定義的SQL語句檢索數(shù)據(jù)庫,將檢索結(jié)果生成一個(gè)游標(biāo)對(duì)象, 記錄前一位置,無法確定游標(biāo)中有沒有記 錄)。? 游標(biāo)中記錄的抽取EXEC SQLFETCH CUR_NAMEINTO:HST-MSG-CD, :HST
19、-MSG-1,:HST-MSG-2END-EXEC.游標(biāo)中記錄的抽?。簩⒂螛?biāo)中的記錄抽取到相應(yīng)的主變量中,一次抽取一條。? 游標(biāo)的關(guān)閉EXEC SQLCLOSE CUR_NAMEEND-EXEC.游標(biāo)的關(guān)閉:將現(xiàn)有的游標(biāo)對(duì)象釋放,游標(biāo)再次打開前,必須關(guān)閉。? 更新EXEC SQLUPDATE WWWTMSG1SET MSG_1 =:WK-MSG-1,MSG_2 = : WK-MSG-2WHERE MSG_CD = : WK-MSG-CD END-EXEC.?刪除EXEC SQLDELETE FROM WWWTMSG1WHERE MSG_CD = : WK-MSG-CDEND-EXEC? 插入E
20、XEC SQLINSERTINTO WWWTMSG1(MSG_CD,MSG_1,MSG_2)VALUES(:WK-MSG-CD,:WK-MSG-1,:WK-MSG-2)END-EXEC? 事務(wù)的提交? 方式一(釋放連接)EXEC SQL COMMIT WORK RELEASE END-EXEC.? 方式二(不釋放連接)EXEC SQL COMMIT WORK END-EXEC.(9(04)COM型),它-1時(shí),表示對(duì)應(yīng)的主變SQLCOD的 值此時(shí)游標(biāo)指針在第一條? 事務(wù)的回滾? 方式一(釋放連接)EXEC SQL ROLLBACK WORK RELEASE END-EXEC.? 方式二(不釋放
21、連接)EXEC SQL ROLLBACK WORK END-EXEC.?典型的SQLCOD值?SELECT1403 :沒有檢索到記錄1403 :游標(biāo)指針FETCH到游標(biāo)的尾部FETCH(游標(biāo)中記錄的抽取)?UPDATE1403 :沒有更新的記錄-60 :死鎖-2049:由于死鎖導(dǎo)致系統(tǒng)超時(shí)?DELETE1403 :沒有刪除的記錄-60 :死鎖INSERT-1 :插入的記錄已存在-60死鎖-2049:由于死鎖導(dǎo)致系統(tǒng)超時(shí)?典型ORACL內(nèi)部變量SQLCODE : SQL語句運(yùn)行后得到的返回值SQLERRMC: SQL語句運(yùn)行后得到的返回信息SQLERRD(3): SQL語句運(yùn)行處理的記錄 條數(shù)4
22、) 、動(dòng)態(tài)SQL語句? 動(dòng)態(tài)一 ( 直接執(zhí)行SQL字符串 )? 方式一MOVE INSERT INTO DYN1 VALUES (TEST) TO DYNSTMT. EXEC SQL EXECUTE IMMEDIATE :DYNSTMT END-EXEC.? 方式二EXEC SQL EXECUTE IMMEDIATEINSERT INTO DYN1 VALUES (TEST)END-EXEC.動(dòng)態(tài)一:只用于沒有任何參數(shù)和返回結(jié)果的SQL語句操作? 動(dòng)態(tài)二(用于非檢索SQL語句)? 方式一(帶參數(shù))MOVE INSERT INTO EMP (EMPNO, DEPTNO) VALUES (:V1, :V2) TO DYNSTMT-ARR.EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.EXEC SQL EXECUTE S USING :EMPNO, :DEPTNO1 END-EXEC.其中V1,V2為形參,S為PREPAR生成的臨時(shí)對(duì)象? 方式二(不帶參數(shù))STRING INSERT INTO DELIMITED BY SIZEEMP (EMPNO, DELIMITED BY SIZE DEPTNO) DELIMITED BY SIZE
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工地勞務(wù)合同小工
- 工地瓷磚供貨合同
- 企業(yè)補(bǔ)貼協(xié)議書
- 農(nóng)村道路維修合同范本
- 加工出售糕團(tuán)合同范例
- 勞動(dòng)短期合同范本
- 做勞務(wù)合同范本
- 中介租車牌合同范本
- 農(nóng)村承包水池合同范本
- 農(nóng)村安裝路燈合同范本
- COP生產(chǎn)一致性控制計(jì)劃
- 2025年江蘇南京技師學(xué)院招聘工作人員19人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 華東師大版七年級(jí)數(shù)學(xué)下冊(cè)“第1周周考”
- DBJ50-T-385-2023半柔性復(fù)合路面技術(shù)標(biāo)準(zhǔn)
- 職業(yè)院校教師人工智能素養(yǎng):內(nèi)涵流變、框架構(gòu)建與生成路徑
- 事故隱患內(nèi)部舉報(bào)獎(jiǎng)勵(lì)制度
- 2024年山東新華書店集團(tuán)限公司臨沂市縣分公司招聘錄取人員(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 2024年岳陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 入團(tuán)志愿書(2016版本)(可編輯打印標(biāo)準(zhǔn)A4) (1)
- 電工每日巡查簽到表
- 機(jī)電一體化系統(tǒng)設(shè)計(jì)課件姜培剛[1]
評(píng)論
0/150
提交評(píng)論