

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基本語法、 COBOL 基本語法cobol 的書寫格式 ( 每行)1、前 6 列為序號區 (一般不編輯 )2、第 7 列為標示列,僅可以寫如下幾個標示符。a.“ ” 注釋符 (注釋當前行的代碼 ) b “ “ 字符串連接符3、第 8 列 -11 列為 A 區,包括以下內容。a 部、節名。b 層號 014、第 12 列 -72 列為 B 區,過程部的程序必須寫在 B 區中。5、第 72 以后部分不能編輯。cobol 的語法結構 ( 幾大部分 )1、 標示部 (IDENTIFICATION DIVISION): 提供程序的一般性文檔說明2、 環境部 (ENVIRONMENT DIVISION):
2、提供程序外部有關的項目。a. 配置節 (CONFIGURATION SECTION). 指定源計算機 (SOURCE-COMPUTE). 目標計算機 (OBJECT-COMPUTE).b.輸入輸出節 (INPUT-OUTPUT SECTION). 文件的物理路徑的定義。方法二 :(過程部中動態指定文件 )SELECT FILE-LOG ASSIGN TOSELECT-FILEORGANIZATION IS LINE SEQUENTIAL .在數據部定義字符串變量SELECT-FILE,在文件FILE-LOG打開前動態指定文件路徑。3、數據部(DATA DIVISION)。程序中的變量都在數據部
3、中定義,Cobol中沒有全局變量和局部之分。 ( 變量的類型結構參照a.文件節(FILE SECTION)給環境部定義的文件指定一個RECORD變量,讀寫文件用:FD FILE-LOG.01 RECORD-LOG PIC X(2000).b.工作存儲節定義程序中用到的臨時變量。5.變量類型 )a) COBOL變量定義需要加層號(表示層次關系),?層號從01開始如: 01 I PIC X(10).? 組合項如: 01 WORK-AREA.05 NUM-1 PIC 9(09).b)層號依次排列順序為:01 ,05,10,15,20,30.c.連接節子程序的參數的定義。4、過程部(PROCEDURE
4、 DIVISION)程序的主體:程序的邏輯運算在此操作。a、每個程序分為四大節(模塊),?前處理(初始化變量,設定初始值等)-主處理(程序業務處理部分)-后處理(程序正常結束時的岀口)-錯誤處理(程序異常結束時的岀口)b、 對于子程序,PROCEDURE DIVISION 后應列岀 LINK 節中定義的參數。女口:PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA.c、 程序結束。-主程序 STOP RUN.-子程序 GO BACK.5、變量類型a字符串型01 STRING-APIC X(100).100個字符長的變量,程序可以局
5、部操作一個變量(STRING-A(sta比length)女口:MOVE ALL X”TO STRING-A(2:10)(將變量STRING-A第2位開始10長度的內容全賦為” X字符)b數值型種類類型說明備注DISPLAY9(m)無符號整數,每位占用一個字節,顯示或輸岀到文件時,為零的數位 顯示”0(1=m =18)例如:01 IPIC 9(8).變量1占用8個字節。I = 1時,輸出顯示時為0000000105 STR-1PIC X(10).COBOL程序的基本變量類型分為兩大類字符串型(X)、數值型(9)S9(m)帶符號整數,每位占用一個字節,符號位不占位,顯示時,為零的數 位顯 示”,符
6、號顯示在最后,輸岀 到文件時, 為零的數位顯示”,符號丟失。(1=m =18)例如:01 IPIC 9(8).變量1占用8個字節。I = 1時,顯示時為00000001 +輸出到文件時為00000001DISPLAY9(m)V9( n)無符號小數(小數點不顯示, 不占位)每位 占用一個字節,顯示或輸岀到 文件時,為零 的數位顯示”0(1=m + n =18)例如:01 IPIC 9(4)V9(2).變量1占用6個字節,整數位4位,小數 位2位。I = 1.1時,輸出顯示時為000110S9(m)V9( n)帶符號小數(小數點不顯示,不占位)每位 占用一個字節,符號位不占位,顯示時,為零的數位顯
7、示” ”符號 顯示在最后,輸岀到 文件時,為零 的數位顯示” ”,符號丟 失。(1=m + n =18)例如:01 IPIC 9(4)V9(2).變量1占用6個字節,整數位4位,小數 位2位。I = 1.1時,顯示時為000110+輸出到文件時為000110Comp,comp-5,comp-39(m) comp-5無符號整數,數據以二進制方式存貯,顯示和9(m)一樣,不能出力(1= m =18)S9(m) comp-5有符號整數,數據以二進制方式存 貯,顯 示和S9(m)類似,只是符號 在前面,不能 出力,(1= m = 18)9(m)v9(n) comp-5無符號小數,數據以二進制方式存 貯
8、,顯示和9(m)v9(n)樣,不能 岀力(1= m + n =18)S9(m)v9(n) comp-5有符號整數,數據以二進制方式存貯,顯示和S9(m)v9(n)類似,只疋符號在前面,不能岀力,(1= m + n 大于小于=等于=NOT =不等于注:判斷字符串能否轉換為數字。NUMERICNOT NUMERICIS NOT NUMERIC11、PERFORM語句PERFORM XXX-RTN.?調用子節,直到遇到第一個只包含EXIT語句的段中止,回到該調用語句的下一條語句EXIT只與它搭配有效。所以節的定義規定如下:XXX-RTNSECTION.語句塊.XXX-EXT.EXIT.PERFORM
9、 XXX-RTN N TIMES.?循環調用子節N次PERFORM XXX-RTN UNTIL N 30.?循環調用子節,直到N大于30。PERFORM UNTIL表達式語句WHENOTHER.END-EVALUATE?ANY:任何變量、常量值 ?TRUE、FALSE:關系表達式的結果?循環調用語句塊,表達式判斷在語句塊前進行。PERFORMVARY INGX語句.END-PERFORM.FROM A BY B UNTIL X 12EVALUATEWHEN變量、常量、表達式ANYTRUEFALSE(NOT)常量1THRU (THROUGH)常量2END-PERFORM.?循環調用語句塊12、E
10、VALUATE,相當于FOR循環 語句口朮兒基本語法(NOT)常量1 THRU (THROUGH)常量2:值(不)在常量1和常量2構成的閉區間 另外,在WHEN后面可 以包含簡單的關系表達式。如:EVALUATE A WHEN = 10EVALUATE BWHEN = 1 OR = 2 OR = 3語句??WHEN OTHER語句??END-EVALUATEWHEN OTHER語句??END-EVALUATE.13、另外,不同的COBOL系統提供了不同內部函數,建議少用內部函數,以下提供幾個通用的內部函數?ORD取得字符的ASICII碼如:二、PRO*COBOLCOMPLA使用的PRO*COB
11、OL是ORACLE公司提供的在 基本語法COBOL程序中嵌入SQL語句的一種方法,使得程序方 便地訪問操作ORACLE數據庫;PRO*COBOL程序經過ORACLE提供的預編譯器預編譯生成中間COBOL程序后,程 序中所有的SQL語 句直接調用ORACLE庫函數, 再經過COBOL編譯器同一般COBOL程序一樣編譯生成各種可執行模 塊,由于程序中直接調用ORACLE庫 函數,所以它們訪問操作ORACLE數據庫的速度很快,基本語法如下、特點所有的SQL或數據庫操作相關語句均被括在 ”EXEC SQL”和 “END-EXEC”之間,并且它們只能包含一條語 句,如:EXEC SQLSQL語句MOVE
12、 FUNCTION ORD (“A”)UPPER-CASE字母小寫轉換成大寫 如:MOVE FUNCTIONUPPER-CASE (STRING(START:1) LOWER -CASE字母小寫轉 換 成大 寫 如 :MOVE FUNCTION LOWER-CASE (STRING(START:1)REVERSE對字符串中所有字符進行倒序 如: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.? 所有訪問操作數據庫的變量都必須是主變量。?“EXEC SQL”,”END-EXEC 及其包含的語句都必須從12列或12列以后開始三、 數據部內容。?引用兩個對象SQLCA, ORACA.EXEC SQL INCLUDE SQLCA END-EXEC.VARCHA型變量(可變長度)該變量定義就是在X型變量后加關鍵字VARYING如:05 STRINGPIC X(100)VARYING.它實際包含兩部分(預編譯后的中間COBO程序可見)05 STRING.06 STRIN
14、G-LEN PIC S9(4)COMP.06 STRING-ARR PIC X(100).STRING-LEN表示字符串的實際長度,STRING-ARR表示字符串的實際內容。SQL語句中,只能用STRING.從表中得到值時,STRING-LEN自動被賦值。向表中寫入值時,STRING-LEN需要手工指定長度,SQL將STRING(1:STRING-LEN部分有效字符串寫到表中。 定義主變 量時,引用COPY句: EXEC SQL INCLUDE WSITIIOl.cpy END-EXEC.? 游標的定義可以放在數據中。四、數據部中SQL語句的基本語法1)、錯誤撲獲ORACLE錯誤撲獲是一個全局
15、性的標志,在一個事務(在PRO*COBO中,ORACLE務以COMMI或ROLLBACKS分割點)中,后一個錯誤撲獲會覆蓋前一個錯誤撲獲設置。?遇至U SQL警告(SQLCODE 0)繼續EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.? 遇至U SQL錯誤(SQLCODE 0)繼續EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.? 遇至U SQL錯誤(SQLCODE 0)跳轉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.主變量定義結束)主變量都必須定義在這里,具體定義和一般的COBO變量一樣2)、數據連接數據庫連接在一般的項目開發中用不到,只用于測試程序中(不連接外部數據庫)?方式一(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)、 靜態SQL語句? 單條記錄的檢索EXEC SQLSELECT ENAME, SAL, COMMINTO :EMP-NAME, :SALARY, :COMMISSION:COMM-INDFROM EMPWHERE EMPNO = :EMP-NUMBEREND-EXEC.注:上例中的COMM-IN為指示變量,在檢索操作中每個接受主變量都可指定一個指示變量用來判斷主變量是不是接受到一個空值(NULL)(主變量不能接受空值),當指示變量為 量應該接受到一個空值(主變量自己表示
18、不出來)? 多條記錄的檢索(CURSORS標)? 游標的定義EXEC SQLDECLARE CUR_NAME CURSOR FORSELECT MSG_CD,MSG_1,MSG_2FROM WWWTMSG1END-EXEC.游標的定義:將SQL查詢語句聲明為一個游標,不調用ORACL庫函數,不會更新? 游標的打開EXEC SQLOPEN CUR_NAMEEND-EXEC.游標的打開:用游標定義的SQL語句檢索數據庫,將檢索結果生成一個游標對象, 記錄前一位置,無法確定游標中有沒有記 錄)。? 游標中記錄的抽取EXEC SQLFETCH CUR_NAMEINTO:HST-MSG-CD, :HST
19、-MSG-1,:HST-MSG-2END-EXEC.游標中記錄的抽取:將游標中的記錄抽取到相應的主變量中,一次抽取一條。? 游標的關閉EXEC SQLCLOSE CUR_NAMEEND-EXEC.游標的關閉:將現有的游標對象釋放,游標再次打開前,必須關閉。? 更新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? 事務的提交? 方式一(釋放連接)EXEC SQL COMMIT WORK RELEASE END-EXEC.? 方式二(不釋放連接)EXEC SQL COMMIT WORK END-EXEC.(9(04)COM型),它-1時,表示對應的主變SQLCOD的 值此時游標指針在第一條? 事務的回滾? 方式一(釋放連接)EXEC SQL ROLLBACK WORK RELEASE END-EXEC.? 方式二(不釋放
21、連接)EXEC SQL ROLLBACK WORK END-EXEC.?典型的SQLCOD值?SELECT1403 :沒有檢索到記錄1403 :游標指針FETCH到游標的尾部FETCH(游標中記錄的抽取)?UPDATE1403 :沒有更新的記錄-60 :死鎖-2049:由于死鎖導致系統超時?DELETE1403 :沒有刪除的記錄-60 :死鎖INSERT-1 :插入的記錄已存在-60死鎖-2049:由于死鎖導致系統超時?典型ORACL內部變量SQLCODE : SQL語句運行后得到的返回值SQLERRMC: SQL語句運行后得到的返回信息SQLERRD(3): SQL語句運行處理的記錄 條數4
22、) 、動態SQL語句? 動態一 ( 直接執行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.動態一:只用于沒有任何參數和返回結果的SQL語句操作? 動態二(用于非檢索SQL語句)? 方式一(帶參數)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生成的臨時對象? 方式二(不帶參數)STRING INSERT INTO DELIMITED BY SIZEEMP (EMPNO, DELIMITED BY SIZE DEPTNO) DELIMITED BY SIZE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國電子雨刮器行業市場競爭現狀及發展趨向研判報告
- 雨污分流管網改造建設項目規劃設計方案(模板范文)
- 一般固廢綜合利用處置中心工程實施方案(參考范文)
- 軌道交通智能制造研究-洞察闡釋
- 菜單設計與消費者食物浪費行為的動態優化路徑研究-洞察闡釋
- 農民專業合作社供應鏈管理與農業產出彈性研究-洞察闡釋
- 蘇州高博軟件技術職業學院《中外美術簡史與醫學名畫欣賞》2023-2024學年第二學期期末試卷
- 腹直肌損傷的力-功能-再生交叉研究-洞察闡釋
- 塑料家具市場細分策略-洞察闡釋
- 忻州師范學院《數學建模與數學方法》2023-2024學年第二學期期末試卷
- 小學民法典主題班會教案
- 《霸王茶姬》認證考核試題附答案
- 集裝箱冷板式液冷數據中心技術規范
- GB/T 7106-2019建筑外門窗氣密、水密、抗風壓性能檢測方法
- GB/T 28046.4-2011道路車輛電氣及電子設備的環境條件和試驗第4部分:氣候負荷
- (精心整理)考試作文格紙
- 倉庫管理員培訓教材課件
- (新版)供電可靠性理論考試題庫大全-上(單選、多選題)
- AS9100D體系標準中文版
- 《中國腦卒中護理指導規范(2021年版)》課件
- 學前教育學備課課件(共54張PPT)
評論
0/150
提交評論