




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基本語(yǔ)法一、COBOL基本語(yǔ)法 compla項(xiàng)目使用的Cobol是Micro Focus 公司生產(chǎn)的Cobol,采用在HP-UNIX上運(yùn)行。一、cobol的書(shū)寫(xiě)格式(每行)1、 前6列為序號(hào)區(qū)(一般不編輯)2、 第7列為標(biāo)示列,僅可以寫(xiě)如下幾個(gè)標(biāo)示符。a. “” 注釋符(注釋當(dāng)前行的代碼)b “/“ 注釋符(注釋當(dāng)前行的代碼,程序編譯時(shí),強(qiáng)制程序清單另起一頁(yè),不建議使用) c “ 字符串連接符 d “D” DEBUG行標(biāo)示符(程序?yàn)镈EBUG模式時(shí),標(biāo)有該標(biāo)示符的語(yǔ)句行代碼執(zhí)行,否則和注釋行效果一樣) 3、第8列-11列為A區(qū),包括以下內(nèi)容。 a 部、節(jié)名。 b 層號(hào)01 4、第12列-72列
2、為B區(qū),過(guò)程部的程序必須寫(xiě)在B區(qū)中。 5、第72以后部分不能編輯。二、cobol的語(yǔ)法結(jié)構(gòu) (幾大部分)1、 標(biāo)示部(IDENTIFICATION DIVISION):提供程序的一般性文檔說(shuō)明,本項(xiàng)目只保留程序名(PROGRAM-ID)一項(xiàng)。2、 環(huán)境部(ENVIRONMENT DIVISION): 提供程序外部有關(guān)的項(xiàng)目。a. 配置節(jié)(CONFIGURATION SECTION).指定源計(jì)算機(jī)(SOURCE-COMPUTE).目標(biāo)計(jì)算機(jī)(OBJECT-COMPUTE).設(shè)置debug模式(SOURCE-COMPUTE H9000V WITH DEBUGGING MODE). 指定讀環(huán)境變量設(shè)
3、置. SPECIAL-NAMES. ENVIRONMENT-VALUE IS CNS-ENV-PARM ENVIRONMENT-NAME IS CNS-ENV-NAME.b. 輸入輸出節(jié)(INPUT-OUTPUT SECTION). 文件的物理路徑的定義。 方法一:(寫(xiě)死文件路徑) SELECT FILE-LOG ASSIGN /usr3/WSI/commonlog/WSI1101.log ORGANIZATION IS LINE SEQUENTIAL. 方法二:(過(guò)程部中動(dòng)態(tài)指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS
4、 LINE SEQUENTIAL. 在數(shù)據(jù)部定義字符串變量SELECT-FILE,在文件FILE-LOG打開(kāi)前動(dòng)態(tài)指定文件路徑。 方法三:(環(huán)境變量中動(dòng)態(tài)指定文件) SELECT FILE-LOG ASSIGN TO EXTERNAL EXTFILELOG ORGANIZATION IS LINE SEQUENTIAL. 在該程序運(yùn)行前,設(shè)置環(huán)境變量: setenv dd_ EXTFILELOG /usr3/WSI/nco035/lsc/tstlog/WSIXXXX.log 3、數(shù)據(jù)部(DATA DIVISION)。 程序中的變量都在數(shù)據(jù)部中定義,Cobol中沒(méi)有全局變量和局部之分。(變量的類(lèi)
5、型結(jié)構(gòu)參照5.變量類(lèi)型)a. 文件節(jié)(FILE SECTION) 給環(huán)境部定義的文件指定一個(gè)RECORD變量,讀寫(xiě)文件用: FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存儲(chǔ)節(jié) 定義程序中用到的臨時(shí)變量。a) COBOL變量定義需要加層號(hào)(表示層次關(guān)系), 層號(hào)從01開(kāi)始 如: 01 I PIC X(10). 組合項(xiàng) 如: 01 WORK-AREA. 05 NUM-1 PIC 9(09). 05 STR-1 PIC X(10). b) 層號(hào)依次排列順序?yàn)?01 ,05,10,15,20,30 c. 連接節(jié)子程序的參數(shù)的定義。 4、 過(guò)程部(PROCE
6、DURE 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、變量類(lèi)型COBOL程序的基本變量類(lèi)型分為兩大類(lèi)字符串型(X)、數(shù)值型(9)。a 字符串
7、型 01 STRING-A PIC X(100). 100個(gè)字符長(zhǎng)的變量,程序可以局部操作一個(gè)變量( STRING-A(start: length)如: MOVE ALL “X” TO STRING-A(2:10) (將變量STRING-A第2位開(kāi)始10長(zhǎng)度的內(nèi)容全賦為”X”字符) b 數(shù)值型 種類(lèi)類(lèi)型說(shuō)明備注DISPLAY9(m)無(wú)符號(hào)整數(shù),每位占用一個(gè)字節(jié),顯示或輸出到文件時(shí),為零的數(shù)位顯示”0”(1=m =18)例如: 01 I PIC 9(8).變量I占用8個(gè)字節(jié)。I = 1 時(shí),輸出顯示時(shí)為00000001S9(m)帶符號(hào)整數(shù),每位占用一個(gè)字節(jié),符號(hào)位不占位,顯示時(shí),為零的數(shù)位顯示”
8、0”,符號(hào)顯示在最后,輸出到文件時(shí),為零的數(shù)位顯示”0”,符號(hào)丟失。(1=m =18)例如: 01 I PIC 9(8).變量I占用8個(gè)字節(jié)。I = 1 時(shí),顯示時(shí)為00000001+輸出到文件時(shí)為00000001DISPLAY9(m)V9(n)無(wú)符號(hào)小數(shù)(小數(shù)點(diǎn)不顯示,不占位)每位占用一個(gè)字節(jié),顯示或輸出到文件時(shí),為零的數(shù)位顯示”0”(1=m + n =18)例如: 01 I PIC 9(4)V9(2).變量I占用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ù)
9、位顯示”0”,符號(hào)顯示在最后,輸出到文件時(shí),為零的數(shù)位顯示”0”,符號(hào)丟失。 (1=m + n =18)例如: 01 I PIC 9(4)V9(2).變量I占用6個(gè)字節(jié),整數(shù)位4位,小數(shù)位2位。I = 1.1 時(shí),顯示時(shí)為000110+輸出到文件時(shí)為000110出力+Z(m)帶符號(hào)整數(shù),每位占用一個(gè)字節(jié),符號(hào)位占位,顯示和輸出到文件時(shí),為零的高位顯示為空格,正數(shù)時(shí),符號(hào)位為”+”負(fù)數(shù)時(shí),符號(hào)位為”-”(1=m =18)例如: 01 I PIC +Z(4).變量I占用5個(gè)字節(jié),I = 1 時(shí), 輸出顯示時(shí)為+ 1I = -1 時(shí),輸出顯示時(shí)為- 1-Z(m)帶符號(hào)整數(shù),每位占用一個(gè)字節(jié),符號(hào)位占
10、位,顯示和輸出到文件時(shí),為零的高位顯示為空格,正數(shù)時(shí),符號(hào)位為空格負(fù)數(shù)時(shí),符號(hào)位為”-”(1=m =18)例如: 01 I PIC +Z(4).變量I占用5個(gè)字節(jié),I = 1 時(shí), 輸出顯示時(shí)為 1I = -1 時(shí),輸出顯示時(shí)為- 1+Z(m).Z(n)帶符號(hào)小數(shù),每位占用一個(gè)字節(jié),符號(hào)、小數(shù)點(diǎn)占位,顯示和輸出到文件時(shí),整數(shù)部為零的高位顯示為空格,小數(shù)部為零的低位顯示為0;正數(shù)時(shí),符號(hào)位為”+” 負(fù)數(shù)時(shí),符號(hào)位為”-”(1=m +n =18)例如: 01 I PIC +Z(4).Z(2)變量I占用8個(gè)字節(jié),I = 1.1 時(shí),輸出顯示時(shí)為+ 1.10I = -1.1 時(shí),輸出顯示時(shí)為- 1.1
11、0-Z(m).Z(n)帶符號(hào)小數(shù),每位占用一個(gè)字節(jié),符號(hào)、小數(shù)點(diǎn)占位,顯示和輸出到文件時(shí),整數(shù)部為零的高位顯示為空格,小數(shù)部為零的低位顯示為空格;正數(shù)時(shí),符號(hào)位為”+” 負(fù)數(shù)時(shí),符號(hào)位為”-”(1=m +n =18)例如: 01 I PIC +Z(4).Z(2)變量I占用8個(gè)字節(jié),I = 1.1 時(shí), 輸出顯示時(shí)為 1.1 I = -1 時(shí),輸出顯示時(shí)為- 1.1 Comp,comp-5,comp-39(m) comp-5無(wú)符號(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) 類(lèi)似,只是符
12、號(hào)在前面,不能出力,(1= m = 18) 9(m)v9(n) comp-5無(wú)符號(hào)小數(shù),數(shù)據(jù)以二進(jìn)制方式存貯,顯示和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) 類(lèi)似,只是符號(hào)在前面,不能出力,(1= m + n 大于IS LESS THAN =小于等于IS NOT LESS THANNOT =大于等于ISNOT EQUAL TONOT =不等于注: 判斷字符串能否轉(zhuǎn)換為數(shù)字。NUMERIC NOT NUMERICIS NOT NUMERIC11、PERFORM 語(yǔ)句 PERFOR
13、M XXX-RTN. 調(diào)用子節(jié),直到遇到第一個(gè)只包含EXIT語(yǔ)句的段中止,回到該調(diào)用語(yǔ)句的下一條語(yǔ)句。 EXIT只與它搭配有效。 所以節(jié)的定義規(guī)定如下: XXX-RTN SECTION. 語(yǔ)句塊 XXX-EXT. EXIT. PERFORM 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á)式 語(yǔ)句 END-PERFORM. 循環(huán)調(diào)用語(yǔ)句塊,表達(dá)式判斷在語(yǔ)句塊前進(jìn)行。 PERFORMVARYING X FROM A BY B UNTIL X 12 語(yǔ)句 END-PERFOR
14、M. 循環(huán)調(diào)用語(yǔ)句塊,相當(dāng)于FOR 循環(huán)。12、EVALUATE 語(yǔ)句EVALUATE 變量、常量、表達(dá)式 WHEN ANY TRUE FALSE (NOT) 常量1 THRU (THROUGH) 常量2 WHEN OTHER .END EVALUATE ANY :任何變量、常量值 TRUE、FALSE :關(guān)系表達(dá)式的結(jié)果 (NOT) 常量1 THRU (THROUGH) 常量2: 值(不)在常量1和常量2 構(gòu)成的閉區(qū)間 另外,在WHEN 后面可以包含簡(jiǎn)單的關(guān)系表達(dá)式。 如: EVALUATE A WHEN = 10 EVALUATE B WHEN = 1 OR = 2 OR = 3 語(yǔ)句 W
15、HEN OTHER 語(yǔ)句 END-EVALUATE WHEN OTHER 語(yǔ)句 END-EVALUATE. 13、另外,不同的COBOL系統(tǒng)提供了不同內(nèi)部函數(shù),建議少用內(nèi)部函數(shù),以下提供幾個(gè)通用的內(nèi)部函數(shù) ORD 取得字符的ASICII碼 如: MOVE FUNCTION ORD (“A”) TO NUMBER. UPPER-CASE 字母小寫(xiě)轉(zhuǎn)換成大寫(xiě) 如: MOVE FUNCTION UPPER-CASE (STRING(START:1) TO STRING(START:1) LOWER -CASE 字母小寫(xiě)轉(zhuǎn)換成大寫(xiě) 如: MOVE FUNCTION LOWER-CASE (STRING
16、(START:1) TO STRING(START:1) REVERSE 對(duì)字符串中所有字符進(jìn)行倒序 如: MOVE FUNCTION REVERSE(STRING-1) TO STRING LENGTH 取得變量的定義長(zhǎng)度,如: COMPUTE LEN = FUNCTION LENGTH(STRING)二、PRO*COBOL基本語(yǔ)法 COMPLA使用的PRO*COBOL是ORACLE公司提供的在COBOL程序中嵌入SQL語(yǔ)句的一種方法,使得程序方便地訪(fǎng)問(wèn)操作ORACLE數(shù)據(jù)庫(kù);PRO*COBOL程序經(jīng)過(guò)ORACLE提供的預(yù)編譯器預(yù)編譯生成中間COBOL程序后,程序中所有的SQL語(yǔ)句直接調(diào)用O
17、RACLE庫(kù)函數(shù),再經(jīng)過(guò)COBOL編譯器同一般COBOL程序一樣編譯生成各種可執(zhí)行模塊,由于程序中直接調(diào)用ORACLE庫(kù)函數(shù),所以它們?cè)L問(wèn)操作ORACLE數(shù)據(jù)庫(kù)的速度很快,基本語(yǔ)法如下。一、特點(diǎn)。 所有的SQL或數(shù)據(jù)庫(kù)操作相關(guān)語(yǔ)句均被括在” EXEC SQL” 和 “END-EXEC”之間,并且它們只能包含一條語(yǔ)句,如: EXEC SQL SQL語(yǔ)句 END-EXEC. 所有訪(fǎng)問(wèn)操作數(shù)據(jù)庫(kù)的變量都必須是主變量。 “EXEC SQL” ,”END-EXEC及其包含的語(yǔ)句都必須從12列或12列以后開(kāi)始。三、 數(shù)據(jù)部?jī)?nèi)容。 引用兩個(gè)對(duì)象SQLCA, ORACA.EXEC SQL INCLUDE SQ
18、LCA END-EXEC.EXEC SQL INCLUDE ORACA END-EXEC. 主變量定義。 EXEC SQL BEGIN DECLARE SECTION END-EXEC. (主變量定義開(kāi)始) EXEC SQL END DECLARE SECTION END-EXEC.(主變量定義結(jié)束) 主變量都必須定義在這里,具體定義和一般的COBOL變量一樣。 VARCHAR型變量(可變長(zhǎng)度). 該變量定義就是在X型變量后加關(guān)鍵字VARYING.如: 05 STRING PIC X(100) VARYING. 它實(shí)際包含兩部分(預(yù)編譯后的中間COBOL程序可見(jiàn)) 05 STRING. 06
19、STRING-LEN PIC S9(4) COMP. 06 STRING-ARR PIC X(100). STRING-LEN 表示字符串的實(shí)際長(zhǎng)度,STRING-ARR 表示字符串的實(shí)際內(nèi)容。 SQL語(yǔ)句中,只能用STRING. 從表中得到值時(shí),STRING-LEN 自動(dòng)被賦值。 向表中寫(xiě)入值時(shí),STRING-LEN 需要手工指定長(zhǎng)度,SQL將STRING(1:STRING-LEN)部分有效字符串寫(xiě)到表中。 定義主變量時(shí),引用COPY句: EXEC SQL INCLUDE WSIT1101.cpy END-EXEC. 游標(biāo)的定義可以放在數(shù)據(jù)中。四、 數(shù)據(jù)部中SQL語(yǔ)句的基本語(yǔ)法1)、錯(cuò)誤撲獲
20、 ORACLE錯(cuò)誤撲獲是一個(gè)全局性的標(biāo)志,在一個(gè)事務(wù)(在PRO*COBOL中,ORACLE事務(wù)以COMMIT或ROLLBACK為分割點(diǎn))中,后一個(gè)錯(cuò)誤撲獲會(huì)覆蓋前一個(gè)錯(cuò)誤撲獲設(shè)置。 遇到SQL警告(SQLCODE 0 )繼續(xù)EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC. 遇到SQL錯(cuò)誤(SQLCODE 0 )繼續(xù)EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC. 遇到SQL錯(cuò)誤(SQLCODE 0 )跳轉(zhuǎn)EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.
21、2)、 數(shù)據(jù)連接 數(shù)據(jù)庫(kù)連接在一般的項(xiàng)目開(kāi)發(fā)中用不到,只用于測(cè)試程序中(不連接外部數(shù)據(jù)庫(kù)) 方式一(USERNAME 和PASSWORD分開(kāi),如:USERNAME = “OPS$LAPROC51” PASSWORD = “LAPROC”)EXEC SQL CONNECT :USERNAME IDENTIFIED BY :PASSWDEND-EXEC. 方式二(USERNAME 和PASSWORD合并,如:UID = “OPS$LAPROC51/LAPROC”)EXEC SQL CONNECT :UIDEND-EXEC.3)、 靜態(tài)SQL語(yǔ)句 單條記錄的檢索EXEC SQL SELECT ENA
22、ME, SAL, COMMINTO :EMP-NAME, :SALARY, :COMMISSION:COMM-INDFROM EMPWHERE EMPNO = :EMP-NUMBEREND-EXEC. 注: 上例中的COMM-IND為指示變量,在檢索操作中每個(gè)接受主變量都可指定一個(gè)指示變量(9(04) COMP型),它用來(lái)判斷主變量是不是接受到一個(gè)空值(NULL)(主變量不能接受空值),當(dāng)指示變量為-1時(shí),表示對(duì)應(yīng)的主變量應(yīng)該接受到一個(gè)空值(主變量自己表示不出來(lái)) 多條記錄的檢索(CURSOR 游標(biāo)) 游標(biāo)的定義 EXEC SQL DECLARE CUR_NAME CURSOR FOR SEL
23、ECT MSG_CD , MSG_1,MSG_2FROMWWWTMSG1 END-EXEC. 游標(biāo)的定義:將SQL查詢(xún)語(yǔ)句聲明為一個(gè)游標(biāo),不調(diào)用ORACLE庫(kù)函數(shù),不會(huì)更新SQLCODE的值。 游標(biāo)的打開(kāi) EXEC SQL OPEN CUR_NAME END-EXEC. 游標(biāo)的打開(kāi):用游標(biāo)定義的SQL語(yǔ)句檢索數(shù)據(jù)庫(kù),將檢索結(jié)果生成一個(gè)游標(biāo)對(duì)象,(此時(shí)游標(biāo)指針在第一條記錄前一位置,無(wú)法確定游標(biāo)中有沒(méi)有記錄)。 游標(biāo)中記錄的抽取 EXEC SQL FETCH CUR_NAME INTO : HST-MSG-CD , : HST-MSG-1,:HST-MSG-2 END-EXEC. 游標(biāo)中記錄的抽取
24、:將游標(biāo)中的記錄抽取到相應(yīng)的主變量中,一次抽取一條。 游標(biāo)的關(guān)閉 EXEC SQL CLOSE CUR_NAME END-EXEC. 游標(biāo)的關(guān)閉: 將現(xiàn)有的游標(biāo)對(duì)象釋放,游標(biāo)再次打開(kāi)前,必須關(guān)閉。 更新 EXEC SQL UPDATE WWWTMSG1 SET MSG_1 = : WK-MSG-1, MSG_2 = : WK-MSG-2 WHERE MSG_CD = : WK-MSG-CD END-EXEC. 刪除 EXEC SQL DELETE FROM WWWTMSG1 WHERE MSG_CD = : WK-MSG-CD END-EXEC 插入 EXEC SQL INSERT INTO
25、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. 事務(wù)的回滾 方式一(釋放連接) EXEC SQL ROLLBACK WORK RELEASE END-EXEC. 方式二(不釋放連接) EXEC SQL ROLLBACK WORK END-EXEC. 典型的SQLCODE值 SELECT 1
26、403 : 沒(méi)有檢索到記錄 FETCH(游標(biāo)中記錄的抽取) 1403 : 游標(biāo)指針FETCH到游標(biāo)的尾部 UPDATE 1403 : 沒(méi)有更新的記錄 -60 : 死鎖 -2049: 由于死鎖導(dǎo)致系統(tǒng)超時(shí) DELETE 1403 : 沒(méi)有刪除的記錄 -60 : 死鎖 -2049: 由于死鎖導(dǎo)致系統(tǒng)超時(shí) INSERT -1 : 插入的記錄已存在 -60 : 死鎖 -2049: 由于死鎖導(dǎo)致系統(tǒng)超時(shí) 典型ORACLE內(nèi)部變量 SQLCODE : SQL語(yǔ)句運(yùn)行后得到的返回值 SQLERRMC: SQL語(yǔ)句運(yùn)行后得到的返回信息 SQLERRD(3): SQL語(yǔ)句運(yùn)行處理的記錄條數(shù) 4)、動(dòng)態(tài)SQL語(yǔ)句
27、 動(dòng)態(tài)一(直接執(zhí)行SQL字符串) 方式一 MOVE INSERT INTO DYN1 VALUES (TEST) TO DYNSTMT.EXEC SQL EXECUTE IMMEDIATE :DYNSTMT END-EXEC. 方式二EXEC SQL EXECUTE IMMEDIATE INSERT INTO DYN1 VALUES (TEST)END-EXEC. 動(dòng)態(tài)一:只用于沒(méi)有任何參數(shù)和返回結(jié)果的SQL語(yǔ)句操作 動(dòng)態(tài)二(用于非檢索SQL語(yǔ)句) 方式一(帶參數(shù))MOVE INSERT INTO EMP (EMPNO, DEPTNO) VALUES (:V1, :V2) TO DYNSTMT
28、-ARR. EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC. EXEC SQL EXECUTE S USING :EMPNO, :DEPTNO1 END-EXEC. 其中V1,V2為形參,S為PREPARE生成的臨時(shí)對(duì)象 方式二(不帶參數(shù)) STRING INSERT INTO DELIMITED BY SIZE EMP (EMPNO, DELIMITED BY SIZE DEPTNO) DELIMITED BY SIZE VALUES ( DELIMITED BY SIZE EMPNO DELIMITED BY SIZE , DELIMITED BY SI
29、ZE DEPTNO1 DELIMITED BY SIZE ) DELIMITED BY SIZEINTO DYNSTMT.EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.EXEC SQL EXECUTE S END-EXEC. 動(dòng)態(tài)三(用于檢索SQL語(yǔ)句) 方式一(帶參數(shù)) MOVE SELECT ENAME FROM EMP WHERE DEPTNO = :V1TO DYNSTMT.EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.EXEC SQL DECLARE C CURSOR FOR S END-EXEC.EXEC
30、SQL OPEN C USING :DEPTNO END-EXEC.EXEC SQL FETCH C INTO :ENAME END-EXEC.EXEC SQL CLOSE C END-EXEC. 方式二(不帶參數(shù)) STRING SELECT ENAME FROM DELIMITED BY SIZE EMP WHERE DEPTNO = DELIMITED BY SIZE DEPTNO DELIMITED BY SIZE DELIMITED BY SIZEINTO DYNSTMT.EXEC SQL DECLARE C CURSOR FOR S END-EXEC.EXEC SQL OPEN C
31、 END-EXEC.EXEC SQL FETCH C INTO :ENAME END-EXEC.EXEC SQL CLOSE C END-EXEC. 所有的檢索SQL語(yǔ)句都必須采用游標(biāo)方式。 三、開(kāi)發(fā)環(huán)境一、概要 Compla項(xiàng)目的開(kāi)發(fā)環(huán)境 以HP UNIX B.11.11 為操作系統(tǒng) 以 OPENTP1 SERVER(日立制品)為APPLICATION SERVER,COMPLA所有的程序都基于OPENTP1. 以MQ SERVER(INFOR STAR MQ ,IBM MQ的改造品)完成異步通信方式。 以 ORACLE SERVER 為數(shù)據(jù)庫(kù)系統(tǒng) 二、通信處理方式 Compla項(xiàng)目采用兩種
32、處理方式RPC(同步),MQ(異步). MQ(Message Queue)方式 如上圖所示,AP制御以SUP的方式常駐于OPENTP1下,監(jiān)視受信MQ SERVER,受信MQ SERVER中一有MQ數(shù)據(jù),AP制御就取出來(lái),傳給DB同期更新程序進(jìn)行處理,更新關(guān)聯(lián)DB,發(fā)信方和受信方以受信MQ SERVER隔離,互相不影響,完成異步處理,在項(xiàng)目開(kāi)發(fā)中,主要開(kāi)發(fā)DB同期更新,不涉及具體環(huán)境。 RPC (Remote Process Call )方式 RPC方式為OPENTP1 SERVER 提供的進(jìn)程間訪(fǎng)問(wèn)方式,由SUP( Service Use Process) 和 SPP ( Service P
33、rovide Process)組成。Compla項(xiàng)目就是制作若干SPP,常駐于OPENTP1中,供其它系統(tǒng)調(diào)用。如下具體介紹SUP 和 SPP的基本結(jié)構(gòu)和基本函數(shù). SUP (服務(wù)使用者) RPCOPEN (開(kāi)始) 01 RPC-OP-ARG. 02 REQEST PIC X(8) VALUE OPEN . 02 STATUS-CODE PIC X(5) VALUE SPACE. 02 FILLER PIC X(3). 02 FLAGS PIC S9(9) COMP VALUE ZERO. CALL CBLDCRPC USING RPC-OP-ARG. 進(jìn)入OPENTP1 環(huán)境 RPC ADM
34、(開(kāi)始処理完了報(bào)告) 01 ADM-ARG. 02 REQUEST PIC X(8) VALUE COMPLETE. 02 STATUS-CODE PIC X(5) VALUE SPACE. 02 FILLER PIC X(3). 02 FLAGS PIC S9(9) COMP VALUE ZERO. 02 FILLER PIC X(3).CALL CBLDCADM USING ADM-ARG. 如果SUP常駐OPENTP1下,該函數(shù)向OPENTP1報(bào)告注冊(cè)信息。(不常駐OPENTP1下的SUP程序不調(diào)用該函數(shù)) RPC CALL (遠(yuǎn)隔要求)01 RPC-CALL-ARG1. (CALL-MAIN) 02 REQEST PI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租賃合同備案費(fèi)用
- 2025法院認(rèn)可的買(mǎi)賣(mài)合同范本
- 2025華能山東石島灣核電有限公司企業(yè)標(biāo)示文字制作安裝合同企業(yè)標(biāo)示文字制作安裝
- 2025二級(jí)建造師建設(shè)工程施工管理考點(diǎn)建筑工程施工合同管理與履行
- 課程設(shè)置與調(diào)整原則計(jì)劃
- 2025私人財(cái)產(chǎn)信托合同協(xié)議樣本
- 2025年合伙協(xié)議合同范本
- 班級(jí)班主任工作總結(jié)與反思計(jì)劃
- 環(huán)境科學(xué)中的污染治理技術(shù)閱讀題及答案解析
- 游戲行業(yè)游戲開(kāi)發(fā)引擎優(yōu)化方案
- 醫(yī)療耗材采購(gòu)工作總結(jié)
- 江蘇省蘇州市2023-2024學(xué)年五年級(jí)下學(xué)期期中綜合測(cè)試數(shù)學(xué)試卷(蘇教版)
- 廉潔教育班會(huì).省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- 2024年4月貴州省高三年級(jí)適應(yīng)性考試物理試卷(含答案)
- 汽車(chē)振動(dòng)學(xué):基于MATLABSimulink的分析與實(shí)現(xiàn) 課件 第2章 汽車(chē)單自由度振動(dòng)系統(tǒng)
- 2024版醫(yī)療器械行業(yè)數(shù)字化轉(zhuǎn)型白皮書(shū)
- 12 清貧公開(kāi)課一等獎(jiǎng)創(chuàng)新教案
- 第四講:簡(jiǎn)單長(zhǎng)管的水力計(jì)算
- T-HNMES 11-2023 盾構(gòu)機(jī)選型設(shè)計(jì)生產(chǎn)協(xié)同制造規(guī)范
- 2020-2021學(xué)年復(fù)旦附中高二年級(jí)下冊(cè)英語(yǔ)期中試卷(部分解析版)
- 心力衰竭合并心律失常的藥物治療策略課件
評(píng)論
0/150
提交評(píng)論