COBOL基礎(chǔ)培訓(xùn)-課件_第1頁(yè)
COBOL基礎(chǔ)培訓(xùn)-課件_第2頁(yè)
COBOL基礎(chǔ)培訓(xùn)-課件_第3頁(yè)
COBOL基礎(chǔ)培訓(xùn)-課件_第4頁(yè)
COBOL基礎(chǔ)培訓(xùn)-課件_第5頁(yè)
已閱讀5頁(yè),還剩96頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、COBOL基礎(chǔ)培訓(xùn)因特馳軟件北京有限公司課程設(shè)置課程安排上課:3天,6節(jié)課,每節(jié)課50分鐘練習(xí):18天驗(yàn)收:作業(yè) + 測(cè)試(筆試 + 上機(jī))學(xué)習(xí)方法 (理論學(xué)習(xí) + 實(shí)際操作)1.上課要做好課堂筆記2.課下熟讀PPT,掌握PPT上的所有要點(diǎn)知識(shí)3.結(jié)合練習(xí),在實(shí)操中掌握COBOL的編程技巧4.學(xué)習(xí)重點(diǎn)在于PPT中涉及到的內(nèi)容學(xué)習(xí)目標(biāo)根據(jù)項(xiàng)目的程序式樣書(shū),編寫(xiě)出合格的COBOL程序。培訓(xùn)內(nèi)容一COBOL概述二標(biāo)識(shí)部三環(huán)境部四數(shù)據(jù)部五過(guò)程部六VSAM文件七各部之間的關(guān)系八程序舉例九COBOL的編譯、鏈接、執(zhí)行十COBOL語(yǔ)言編程規(guī)范一.COBOL概述什么是COBOL語(yǔ)言COBOL語(yǔ)言的特點(diǎn)COBO

2、L程序的基本結(jié)構(gòu)COBOL程序結(jié)構(gòu)示意圖COBOL程序的書(shū)寫(xiě)區(qū)域COBOL程序的書(shū)寫(xiě)格式COBOL的字符一.COBOL概述1. 什么是COBOL語(yǔ)言COBOL是Common Business Oriented Language的縮寫(xiě),是面向商業(yè)通用編程語(yǔ)言。它是專(zhuān)門(mén)為商業(yè)數(shù)據(jù)處理而設(shè)計(jì)的計(jì)算機(jī)高級(jí)程序語(yǔ)言。廣泛用于數(shù)據(jù)管理領(lǐng)域。應(yīng)用于多個(gè)行業(yè)如:銀行,證券,金融,制造,等等。1960年4月正式發(fā)表COBOL 61。目前最新版COBOL 2002。2. COBOL語(yǔ)言的特點(diǎn)描述性好,能根據(jù)需要描述各種形式的數(shù)據(jù)。適合大批量數(shù)據(jù)處理,能對(duì)數(shù)據(jù)進(jìn)行嚴(yán)密的組織(運(yùn)算簡(jiǎn)單但運(yùn)算量大,邏輯運(yùn)算多)語(yǔ)法接近

3、自然語(yǔ)言(英語(yǔ)),成文自明。遵循ISO標(biāo)準(zhǔn),通用性強(qiáng),移植方便。格式固定,結(jié)構(gòu)嚴(yán)謹(jǐn),層次分明。缺點(diǎn)是比較繁瑣。一.COBOL概述3. COBOL程序的基本結(jié)構(gòu)標(biāo)識(shí)部(IDENTIFICATION DIVISION) 用來(lái)標(biāo)識(shí)程序名稱(chēng),記錄程序的文檔記錄信息如作者和日期等。環(huán)境部(ENVIRONMENT DIVISION) 用來(lái)描述程序運(yùn)行和編譯的計(jì)算機(jī)環(huán)境,內(nèi)部數(shù)據(jù)文件與系統(tǒng)設(shè)備的對(duì)應(yīng)關(guān)系。數(shù)據(jù)部(DATA DIVISION) 定義程序中所有數(shù)據(jù)的類(lèi)型和所占內(nèi)存的大小。過(guò)程部:(PROCEDURE DIVISION) 編寫(xiě)程序要執(zhí)行的語(yǔ)句,是程序的核心。一.COBOL概述4. COBOL程序結(jié)

4、構(gòu)示意圖cobol標(biāo)識(shí)部過(guò)程部數(shù)據(jù)部環(huán)境部段節(jié)段句子節(jié)描述體句子節(jié)段句子一.COBOL概述COBOL程序結(jié)構(gòu)示意圖部下設(shè)置節(jié),節(jié)下設(shè)置段或描述體,段下或節(jié)下包含句子。節(jié)是由一個(gè)或多個(gè)段組成的,節(jié)的定義從節(jié)名開(kāi)始到下一個(gè)節(jié)名或文本結(jié)束為止。定義格式:節(jié)名 SECTION.(節(jié)名分為系統(tǒng)定義和用戶(hù)自定義兩種)段由一個(gè)或多個(gè)句子組成,段的定義從段名開(kāi)始到下一個(gè)段名或文本結(jié)束為止。定義格式:段名. (段名+點(diǎn)號(hào))(段名分為系統(tǒng)定義和用戶(hù)自定義兩種)文件描述體只能在數(shù)據(jù)部中定義,用于描述外部文件的屬性及其記錄的格式。定義格式:FD 文件名.(文件描述體用FD(File Description)語(yǔ)句定義)

5、句子是完整的指令,用相應(yīng)的動(dòng)詞表示其操作,以一個(gè)句號(hào)加一個(gè)以上的空格來(lái)結(jié)束。一.COBOL概述5. COBOL程序的書(shū)寫(xiě)區(qū)域標(biāo)準(zhǔn)COBOL程序每行80列,被分為五個(gè)區(qū)域第0106列為 “標(biāo)號(hào)區(qū)” 標(biāo)號(hào)是6位數(shù)字,應(yīng)從小到大,但不一定連續(xù),標(biāo)號(hào)只是方便查閱程序,可以省略。第07列為 “注釋區(qū)”,“DEBUG標(biāo)識(shí)區(qū)” “*“:表示本行是注釋行,用于注釋程序說(shuō)明。 “D“ :表示本行是DEBUG行,用于程序調(diào)試。第0811列為 “A區(qū)” 程序中下列語(yǔ)句必須從該區(qū)開(kāi)始書(shū)寫(xiě):部名、節(jié)名、段名,描述符(FD),01和77層。第1272列為 “B區(qū)” 程序正文部分,過(guò)程部語(yǔ)句必須從該區(qū)開(kāi)始書(shū)寫(xiě)。第7380列

6、為 “注釋區(qū)” 行注釋區(qū),寫(xiě)入此區(qū)的內(nèi)容在編譯時(shí)被忽略,(一般不推薦使用)一.COBOL概述6. COBOL程序的書(shū)寫(xiě)格式大小寫(xiě)字母等價(jià),但引號(hào)中的字符除外。 如:MOVE A TO B = MOVE a TO b DISPLAY HELLO DISPLAY hello相鄰的兩個(gè)COBOL字之間有一個(gè)以上的空格。運(yùn)算符和等號(hào)左右必須各有一個(gè)以上的空格;圓括號(hào)外側(cè)必須有一個(gè)以上的空格,內(nèi)側(cè)不必。如:COMPUTE R = A ( B + C ) / D逗號(hào),句號(hào),分號(hào)左邊不能有空格,而右邊應(yīng)有。 如:DISPLAY A= , A一.COBOL概述7. COBOL的字符COBOL字符集包括:數(shù)字0

7、 - 9 ,字母 A - Z ,a - z ,15個(gè)專(zhuān)用符號(hào):+ - * / = ,(逗號(hào)) .(句號(hào)) ;(分號(hào)) (引號(hào)) $ ( ) 空格。屬于系統(tǒng)字符集而不屬于COBOL字符集的字符,只能出現(xiàn)在COBOL程序的字符串或注釋行中。如:DISPLAY #HELLO# COBOL字是由上述字符組成的最小單位。(保留字 ,用戶(hù)字)保留字:規(guī)定五種類(lèi)型專(zhuān)門(mén)用途的字(300多個(gè))鍵字:如:MOVE ,ADD 等可選字:如:USAGE IS 等專(zhuān)用字符:如運(yùn)算符:+ - * / 等 ;比較符 = 等表意常量:如:ZERO/ZEROS/ZEROES;SPACE/SPACES;QUOTE/QUOTES;

8、HIGH-VALUE/HIGH-VALUES;LOW-VALUE/LOW-VALUES;ALL;NULL/NULLS專(zhuān)用寄存器:如:LENGTH OF;RETURN-CODE等用戶(hù)字:用戶(hù)自定義的名字。如:程序名,文件名,節(jié)名,段名,數(shù)據(jù)名等一.COBOL概述7. COBOL的字符數(shù)據(jù)名:相當(dāng)于其它語(yǔ)言中的變量名,它代表一個(gè)具體的數(shù)據(jù)項(xiàng)。只能由字母(至少一個(gè)),數(shù)字和連字符“-“組成,連字符不能出現(xiàn)在兩端,不能包含空格數(shù)據(jù)名長(zhǎng)度不能超過(guò)30個(gè)字符 (lengthBDIVIDEAINTO B GIVINGC 是指B/A-CDIVIDEABY BGIVINGC是指 A/B-C五.過(guò)程部(PROCE

9、DURE DIVISION)7.算數(shù)運(yùn)算語(yǔ)句COMPUTE語(yǔ)句:綜合算數(shù)運(yùn)算語(yǔ)句,使用算數(shù)表達(dá)式完成計(jì)算一般格式:COMPUTE標(biāo)示符1,標(biāo)示符2 = 算數(shù)表達(dá)式運(yùn)算符優(yōu)先級(jí)由高到低順序?yàn)椋海ǎ?、正?fù)號(hào)、*、* 或 / 、+ 或 例如:C = 3 ,D = 5 ,E = 2 ,F(xiàn) = 1COMPUTE A,B = -(C + D)* 2 / E * 3 FC 則:A = -3、B = -3ROUNDED語(yǔ)句:四舍五入。用于帶有小數(shù)點(diǎn)的十進(jìn)制數(shù)運(yùn)算。當(dāng)計(jì)算結(jié)對(duì)小數(shù)點(diǎn)最右邊的數(shù)字需要截?cái)鄷r(shí)進(jìn)行四舍五入處理。例如:A,B,C均定義為9V9COMPUTE A ROUNDED = B * CBEFORE

10、 1.0 1.2 1.8AFTER 2.2 1.2 1.8 /2.16五.過(guò)程部(PROCEDURE DIVISION)7.算數(shù)運(yùn)算語(yǔ)句ON SIZE ERROR語(yǔ)句:長(zhǎng)度溢出判斷。十進(jìn)制數(shù)運(yùn)算時(shí),計(jì)算結(jié)果比數(shù)據(jù)項(xiàng)的長(zhǎng)度要長(zhǎng),則被稱(chēng)為長(zhǎng)度溢出。當(dāng)發(fā)生溢出錯(cuò)誤時(shí),按程序設(shè)計(jì)者事先指定的操作處理。例如:A,B,C均定義為9V9COMPUTE A = B * CON SIZE ERROR DISPLAY SIZE ERROR STOP RUN.DISPLAY A.如A,B,C均定義為9V9,B=1.2、C=9.0則AB*C,應(yīng)該為10.8,此時(shí)發(fā)生長(zhǎng)度溢出。當(dāng)ROUNDED 與ON SIZE ERR

11、OR 一起使用時(shí),先按ROUNDED 作四舍五入處理,再判斷是否溢出。REMAINDER語(yǔ)句:用于除法語(yǔ)句(DIVIDE)求余數(shù)。例如:A、B、C、D均定義為9(02)V9DIVIDE A INTO B GIVING C REMAINDER DBEFORE 3 10 0 0AFTER 3 10 3.3 0.1 商和余數(shù)的值不僅取決于除數(shù)和被除數(shù),還取決于數(shù)據(jù)部中對(duì)商和余數(shù)的描述如用ROUNDED語(yǔ)句,它只對(duì)商起作用,余數(shù)不作四舍五入處理長(zhǎng)度溢出也只檢查商的值是否溢出,而不檢查余數(shù)五.過(guò)程部(PROCEDURE DIVISION)8.字符串語(yǔ)句:STRING、UNSTRING、INSPECTST

12、RING語(yǔ)句:用來(lái)將多個(gè)非數(shù)值型數(shù)據(jù)項(xiàng)的值連接后發(fā)送到一個(gè)接收數(shù)據(jù)項(xiàng)中,在合并過(guò)程中可以刪除某些指定的字符。一般格式:STRING str1DELIMITED BYsymbol1 str2DELIMITED BYsymbol2 INTO strn WITH POINTER position1 ON OVERFLOW perform . END-STRINGDELIMITED BY SIZE:按發(fā)送項(xiàng)的長(zhǎng)度全部傳送到接收項(xiàng)77APICX(04)VALUEABC.77BPICX(04)VALUEJKL.77CPICX(04)VALUEXYZ.77DPICX(16)VALUE*.STRING A,

13、B, C DELIMITED BY SIZE INTO D./ D=ABC_JKL_XYZ_*DELIMITED BY SPACE:將發(fā)送項(xiàng)空格之前的字符串傳送到接收項(xiàng)STRING A, B, C DELIMITED BY SPACE INTO D/ D=ABCJKLXYZ* (末尾七個(gè)*)五.過(guò)程部(PROCEDURE DIVISION)8.字符串語(yǔ)句:STRING、UNSTRING、INSPECTSTRING語(yǔ)句:DELIMITED BY 字符常量:使用其它字符作為定界符,各個(gè)發(fā)送項(xiàng)可以使用不同的定界符STRING A DELIMITED BY B B DELIMITEDBYL C DEL

14、IMITED BY MINTO D./ D=AJKXYZ_* (末尾9個(gè)*)可以在傳送中插入所需字符STRING A, *, B, =, C DELIMITED BY SPACE INTO D/ D=ABC*JKL=XYZ* (末尾五個(gè)*)POINTER:如果不想從接收項(xiàng)的最左端開(kāi)始接收字符,可以使用POINTER短語(yǔ)指定從某一字符位開(kāi)始接收字符MOVE 3 TO P.STRING A, B, C DELIMITED BY SPACEWITH POINTER PINTO D./ D=*ABCJKLXYZ* (頭部?jī)蓚€(gè),末尾五個(gè)*)五.過(guò)程部(PROCEDURE DIVISION)8.字符串語(yǔ)句

15、:STRING、UNSTRING、INSPECTSTRING語(yǔ)句:ON OVERFLOW :如果接收項(xiàng)的字符個(gè)數(shù)不足,則發(fā)生“溢出”,可以進(jìn)行溢出處理77 D PIC X(10)STRING A, B, C DELIMITED BY SIZE INTO DON OVERFLOW DISPLAY OVER FLOW./ D=ABC_JKL_XY OVER FLOW注意:接收數(shù)據(jù)項(xiàng)必須是初等項(xiàng)指針項(xiàng)必須是一個(gè)整型的初等項(xiàng)STRING語(yǔ)句結(jié)束后,接收項(xiàng)中未送入的字符位置上保持原有內(nèi)容,而不是自動(dòng)設(shè)置空格五.過(guò)程部(PROCEDURE DIVISION)8.字符串語(yǔ)句:STRING、UNSTRING、

16、INSPECTUNSTRING語(yǔ)句:將一個(gè)發(fā)送字符串拆成若干個(gè)接收字符串,是STRING語(yǔ)句的逆操作可以使用DELIMITED子句設(shè)置分解時(shí)的定界符。自左向右累計(jì)字符,直到遇見(jiàn)定界符,符號(hào)左面的內(nèi)容按MOVE語(yǔ)句的規(guī)則傳送到接收項(xiàng)。77 A PIC X(23) VALUE DATE PRODUCT QUANTITY.77 B PIC X(5).77 C PIC X(8).77 D PIC X(8). UNSTRING A DELIMITED BY SPACE INTO B, C, D/ B=DATE_、C=PRODUCT_、D=QUANTITYUNSTRING A DELIMITED BY T

17、 INTO B, C, D/ B=DA_ 、C=E_PRODUC、D=_QUAN_五.過(guò)程部(PROCEDURE DIVISION)8.字符串語(yǔ)句:STRING、UNSTRING、INSPECTINSPECT語(yǔ)句:檢查一個(gè)字符串?dāng)?shù)據(jù)項(xiàng)中某個(gè)字符INSPECT TALLYING:統(tǒng)計(jì)字符串出現(xiàn)的次數(shù)INSPECT A TALLYING N FOR SPACE.檢查數(shù)據(jù)項(xiàng)A中是否有空格,找到一個(gè)就將計(jì)數(shù)器N加1INSPECT REPLACING :用別的字符串替換該字符串INSPECT A REPLACING SPACE BY ,.將數(shù)據(jù)項(xiàng)A中所有空格替換成逗號(hào)INSPECT TALLYING R

18、EPLACING :替換并統(tǒng)計(jì)字符串的次數(shù)INSPECT A TALLYING N FOR ALL SPACEREPLACING ALL SPACE BY ,.檢查數(shù)據(jù)項(xiàng)A中空格的個(gè)數(shù),并將數(shù)據(jù)項(xiàng)A中所有空格替換成逗號(hào)五.過(guò)程部(PROCEDURE DIVISION)9.IF語(yǔ)句:條件轉(zhuǎn)移語(yǔ)句。根據(jù)給出的判斷條件是否滿(mǎn)足,來(lái)決定執(zhí)行哪一部分語(yǔ)句一般格式:IF條件 語(yǔ)句組1ELSE 語(yǔ)句組2END-IF.關(guān)系運(yùn)算符:ISGREATERTHANISLESSTHANISNOTLESSTHANNOT =ISLESSTHANOREQUALTO=五.過(guò)程部(PROCEDURE DIVISION)9.IF語(yǔ)

19、句:條件轉(zhuǎn)移語(yǔ)句。根據(jù)給出的判斷條件是否滿(mǎn)足,來(lái)決定執(zhí)行哪一部分語(yǔ)句關(guān)系運(yùn)算規(guī)則:數(shù)值變量之間按其代數(shù)值進(jìn)行比較3-200字母型數(shù)據(jù)之間字典序進(jìn)行比較xcap ccobol字符型數(shù)據(jù)之間按其編碼規(guī)則進(jìn)行比較ASCII編碼:1 A 在條件判斷表達(dá)式中,只能將同類(lèi)型的數(shù)據(jù)進(jìn)行比較,即數(shù)值型數(shù)據(jù)和數(shù)值型數(shù)據(jù)比較,字符型數(shù)據(jù)和字符型數(shù)據(jù)比較。IF結(jié)構(gòu)中.的用法IFA0 DISPLAYA - ADDATOTOTA - END-IFDISPLAY TOTAL.IFA0 DISPLAYA. - ADDATOTOTAL. - DISPLAYTOTAL.五.過(guò)程部(PROCEDURE DIVISION)9.IF

20、語(yǔ)句:條件轉(zhuǎn)移語(yǔ)句。根據(jù)給出的判斷條件是否滿(mǎn)足,來(lái)決定執(zhí)行哪一部分語(yǔ)句復(fù)合條件:由若干個(gè)簡(jiǎn)單的“條件”組合而成的條件,使用邏輯運(yùn)算符AND(與),OR(或),如果在一個(gè)IF語(yǔ)句中同時(shí)用到AND,OR,其優(yōu)先級(jí)是:AND ORIF ( A1000 AND A 0類(lèi)型條件:檢查數(shù)據(jù)項(xiàng)的類(lèi)型是否符合指定的要求,即數(shù)據(jù)項(xiàng)的內(nèi)容是否全為數(shù)字或字母IF 數(shù)據(jù)名 IS NOT NUMERIC | ALPHABETIC | ALPHABETIC-LOWER | ALPHABETIC-UPPER 77 T PIC A(4) VALUE WANG.IF T IS ALPHABETIC /true五.過(guò)程部(PRO

21、CEDURE DIVISION)9.IF語(yǔ)句:條件轉(zhuǎn)移語(yǔ)句。根據(jù)給出的判斷條件是否滿(mǎn)足,來(lái)決定執(zhí)行哪一部分語(yǔ)句條件名條件:簡(jiǎn)單的說(shuō),條件名就是用一個(gè)數(shù)據(jù)名代表一個(gè)條件例如:為鼓勵(lì)存款,存款數(shù)小于1000元,利息為2%;大于等于1000元但小于10000元,利息為3%;大于等于10000元但小于50000元,利息為4%;大于等于50000元但小于100000元,利息為5%在數(shù)據(jù)部中可以這樣定義:77CKPIC9(05).88T1VALUE0THRU999.88T2VALUE1000THRU9999.88T3VALUE10000THRU49999.88T4VALUE50000THRU99999.C

22、K是條件變量,定義為數(shù)值變化的范圍T1T4是條件名,緊跟在條件變量之后,必須用層號(hào)88定義VULUE子句的作用不是賦初值,而是為條件變量的一個(gè)可能值命名對(duì)于 “88 T1 VALUE 0 THRU 999” 應(yīng)理解為:當(dāng)CK的值在0999時(shí),條件T1為“真”在過(guò)程部可以直接使用條件名條件:IF T1 MOVE 0.02 TO RATE.IF ( CK = 0 AND CK 10.PERFORM過(guò)程名1 VARYING標(biāo)識(shí)符1 FROM初值(整數(shù)/標(biāo)示符) BY 步長(zhǎng)(整數(shù)/標(biāo)示符) UNTIL 條件PERFORMTEST-RTN VARYINGT1FROM1BY1UNTIL T1 10. 循環(huán)

23、變量T1的初值可以為正,負(fù)或零;步長(zhǎng)不能為零! 循環(huán)變量T1的值在每次循環(huán)中自動(dòng)按步長(zhǎng)增加 五.過(guò)程部(PROCEDURE DIVISION)11. PERFORM語(yǔ)句:作為執(zhí)行語(yǔ)句和實(shí)現(xiàn)循環(huán)控制語(yǔ)句PERFORM語(yǔ)句可以實(shí)現(xiàn)多重循環(huán)一般格式:PERFORM段名1 THRU 段名2 VARYING參數(shù)1FROM 初值1 BY 步長(zhǎng)1 UNTIL 條件1 AFTER 參數(shù)2 FROM 初值2 BY 步長(zhǎng)2 UNTIL 條件2 AFTER 參數(shù)3 FROM 初值3 BY 步長(zhǎng)3 UNTIL 條件3PERFORM T VARYINGXFROM 1 BY 1 UNTIL X 9 AFTERYFROM

24、1 BY 1 UNTIL Y XPERFORM 語(yǔ)句的六種形式:PERFORM T1PERFORM T1 N TIMESPERFORM T1 UNTIL N10PERFORM T1 VARYING X FROM 1 BY 2 UNTIL X10PERFORM T1 VARYING X FORM 1 BY 1 UNTIL X10 AFTER Y FROM 1 BY 2 UNTIL Y8五.過(guò)程部(PROCEDURE DIVISION)12. EXIT語(yǔ)句:提供一組過(guò)程的公共出口,或者說(shuō)它指出了被調(diào)用過(guò)程的邏輯終點(diǎn),一般用作PERFORM語(yǔ)句序列的出口。EXIT語(yǔ)句必須是段中唯一的語(yǔ)句,前面必須有

25、段名。13. CONTINUE語(yǔ)句:用來(lái)指定一個(gè)空操作,即什么也不做,用來(lái)占位置。程序?qū)㈨樞驁?zhí)行到CONTINUE語(yǔ)句的下一條語(yǔ)句。14. GO TO語(yǔ)句:用來(lái)改變程序的執(zhí)行順序,程序執(zhí)行到此將無(wú)條件轉(zhuǎn)移到指定的標(biāo)號(hào)(段名/節(jié)名)一般格式:GO TO 標(biāo)號(hào)由于打亂了原來(lái)程序正常的執(zhí)行順序,降低了程序的可讀性,因此,嚴(yán)禁使用。 15. CALL語(yǔ)句:調(diào)用子程序子程序概述:PERFORM語(yǔ)句只能在同一程序中多次調(diào)用某一語(yǔ)句序列,如果被調(diào)用部分較復(fù)雜或需要被其他程序使用時(shí),可以將其編寫(xiě)為單獨(dú)的一個(gè)程序,即子程序,調(diào)用子程序的為主程序。使用子程序的優(yōu)點(diǎn):簡(jiǎn)化主程序,使程序結(jié)構(gòu)清晰子程序功能單一,易于編

26、寫(xiě)和調(diào)試,減少錯(cuò)誤可由多人完成不同子程序,從而完成復(fù)雜任務(wù)只需重編譯修改的子程序,而不必對(duì)所有源程序編譯子程序可以重用,減少重復(fù)勞動(dòng)五.過(guò)程部(PROCEDURE DIVISION)15. CALL語(yǔ)句:調(diào)用簡(jiǎn)例:主程序子程序st001.cobol.source(MAINPG)st001.cobol.source(SUBPG)IDENTIFICATIONDIVISION.IDENTIFICATIONDIVISION.PROGRAM-ID. MAINPG.PROGRAM-ID.SUBPG.DATADIVISION.DATADIVISION.WORKING-STORAGE SECTION. LIN

27、KAGE SECTION.01 PARM-IN-DATA. 01 LNK-IN-DATA.02 LENPIC S9(2) COMP. 03 LENPIC S9(2) COMP.02 PARTNOPIC X(5).XABCD 03 PART-ID PIC X(5).02 SALES PIC 9(5).12345 03 SALES PIC 9(5). 01 PARM-OUT-DATAPIC 9(18).01 LNK-OUT-DATAPIC 9(18)PROCEDUREDIVISON. PROCEDUREDIVISION USING LNK-IN-DATA LNK-OUT-DATA. CALLSUB

28、PG USING PARM-IN-DATA PARM-OUT-DATA DISPLAY PART-ID. ADD 10 TO SALES. STOP RUN. GO BACK.五.過(guò)程部(PROCEDURE DIVISION)15. CALL語(yǔ)句:說(shuō)明:為主程序和各個(gè)子程序起有意義的program-id,便于區(qū)分主程序使用CALL語(yǔ)句按program-id而不是數(shù)據(jù)集名調(diào)用子程序,注意要使用引號(hào)主程序使用CALL USING 子句傳遞參數(shù)子程序LINKAGE節(jié)中定義用來(lái)接受主程序傳遞的參數(shù),可以是初等項(xiàng),或組合項(xiàng)參數(shù)的數(shù)據(jù)結(jié)構(gòu)可以不同,但長(zhǎng)度必須相同子程序參數(shù)不能使用VALUE子句賦初值子程序

29、在過(guò)程部頭之后使用USING接受主程序的參數(shù),參數(shù)個(gè)數(shù)必須和CALL語(yǔ)句中USING子句參數(shù)個(gè)數(shù)相同在執(zhí)行時(shí)遇到GOBACK語(yǔ)句,子程序運(yùn)行完了,主程序繼續(xù)運(yùn)行CALL之后的語(yǔ)句16. GOBACK語(yǔ)句:返回語(yǔ)句。停止運(yùn)行,將控制權(quán)返回給上一級(jí)。子程序必須用GOBACK,而不能用STOP,因?yàn)镾TOP停止的是一個(gè)RUN UNIT(運(yùn)行單元)。 17. STOP RUN語(yǔ)句:停止語(yǔ)句。STOP RUN在邏輯上應(yīng)該是程序的最后一個(gè)語(yǔ)句。STOP RUN 執(zhí)行后,程序停止運(yùn)行,停止后不能再接著運(yùn)行,如需要,可重新運(yùn)行一次。主程序一般通過(guò)STOP RUN語(yǔ)句結(jié)束運(yùn)行單元。六.VSAM文件(Virtua

30、l Storage Access Method)什么是VSAMVSAM的組織形式和存取方法VSAM文件在環(huán)境部VSAM文件在數(shù)據(jù)部VSAM文件在過(guò)程部VSAM文件的建立六.VSAM文件(Virtual Storage Access Method)什么是VSAMVSAM是一種虛擬存取方法,它是為了與直接存取存儲(chǔ)設(shè)備DASD(Direct Access Storage Device-能夠在文件上直接地存取任何記錄的設(shè)備)一起使用而研制的文件管理系統(tǒng)。是大型機(jī)上另外一種數(shù)據(jù)存方法,與PS和PDS最大的差別在于,VSAM是支持索引(index)的,而PS和PDS都是順序查找的。 VSAM的組織形式和存

31、取方法文件的組織形式 : 是指數(shù)據(jù)記錄在文件中的排列方式。文件的存取方法 : 是指從文件中找到數(shù)據(jù)記錄的方法。組 織 形 式存取方法進(jìn)入順序數(shù)據(jù)組織Entry Sequential Organization進(jìn)入順序數(shù)據(jù)集 ESDSEntry Sequenced Data Set鍵順序數(shù)據(jù)組織Indexed Sequential Organization鍵順序數(shù)據(jù)集 KSDSKey Sequenced Data Set相對(duì)記錄數(shù)據(jù)組織Relative Organization相對(duì)記錄數(shù)據(jù)集RRDSRelative Record Data Set六.VSAM文件(Virtual Storage A

32、ccess Method)VSAM的組織形式和存取方法ESDS進(jìn)入順序數(shù)據(jù)集記錄以進(jìn)入數(shù)據(jù)集的順序排列,新加入的記錄排數(shù)據(jù)集的末尾??梢园凑张帕许樞蜻M(jìn)行存取,也可以指定記錄的相對(duì)字節(jié)地址對(duì)特定記錄進(jìn)行存取。KSDS鍵字順序數(shù)據(jù)集記錄由索引部分和數(shù)據(jù)部分組成,索引部分包含樹(shù)型結(jié)構(gòu)的多級(jí)索引。數(shù)據(jù)部分內(nèi)的記錄按鍵值順序排列??梢园存I值進(jìn)行順序存取,也可利用索引,根據(jù)鍵值進(jìn)行直接存取。RRDS相對(duì)記錄數(shù)據(jù)集文件空間被劃分成若干邏輯框,每個(gè)邏輯框只存放一個(gè)記錄,從第一個(gè)邏輯框開(kāi)始賦予連續(xù)的記錄號(hào),記錄以其相對(duì)記錄號(hào)順序存放,訪(fǎng)問(wèn)也是通過(guò)相對(duì)記錄號(hào)來(lái)進(jìn)行訪(fǎng)問(wèn)。六.VSAM文件(Virtual Stora

33、ge Access Method)3.VSAM文件在環(huán)境部ESDS進(jìn)入順序數(shù)據(jù)集SELECT內(nèi)部文件名ASSIGN TOAS-外部文件名.ORGANIZATIONISSEQUENTIAL.ACCESSMODEISSEQUENTIAL. FILESTATUSIS變量名.KSDS鍵字順序數(shù)據(jù)集SELECT內(nèi)部文件名ASSIGN TO外部文件名.ORGANIZATIONISINDEXED.RECORDKEYIS變量名.ACCESSMODEIS(SEQUENCIAL, RANDOM, DYNAMIC). FILESTATUSIS變量名.RECORD KEY用于指定文件中KEY在程序中的名稱(chēng)。RRDS相

34、對(duì)記錄數(shù)據(jù)集SELECT內(nèi)部文件名ASSIGN TO外部文件名.ORGANIZATIONISRELATIVE.RELATIVEKEYIS變量名.ACCESSMODEIS(SEQUENCIAL, RANDOM, DYNAMIC). FILESTATUSIS變量名.FILE STATUS用于指定文件狀態(tài)返回碼在程序中的名稱(chēng)。六.VSAM文件(Virtual Storage Access Method)4.VSAM文件在數(shù)據(jù)部VSAM文件的描述與一般的PS文件類(lèi)似,如果為KSDS文件,需要在記錄中指定REORD-KEY數(shù)據(jù)項(xiàng),即在環(huán)境部中定義的RECORD KEY的變量名。如:外部文件STUDENT

35、FILE101LILEI_19900521102HANMEIMEI_19910610環(huán)境部定義如下:ENVIRONMENTDIVISION.INPUT-OUTPUTSECTION.FILE-CONTROL.SELECTIN-FILLEASSIGNTOSTUDENTFILE. ORGANIZATIONISINDEXED.RECORDKEYISSTUD-ID.數(shù)據(jù)部定義如下:FDIN-FILE.01STUDENT-RECORD.05STUD-IDPIC9(03).05STUD-NAMEPICX(20).05STUD-BIRTH.10BIRTH-YYYYPIC9(04).10BIRTH-MMPIC9

36、(02).10BIRTH-DDPIC9(02).六.VSAM文件(Virtual Storage Access Method)5.VSAM文件在過(guò)程部VSAM文件的操作與一般的PS文件類(lèi)似,如果為KSDS文件,在讀取記錄時(shí),可順序讀取還可以通過(guò)指定KEY值來(lái)讀取特定的記錄,或符合指定KEY值范圍的一組記錄。在寫(xiě)入KSDS文件時(shí)要注意,KEY值一定要唯一,否則會(huì)出錯(cuò)。如:外部文件STUDENTFILE101LILEI_19900521102HANMEIMEI_19910610103LUCI_19910520環(huán)境部定義如下:ENVIRONMENTDIVISION.INPUT-OUTPUTSECTI

37、ON.FILE-CONTROL.SELECTIN-FILLEASSIGNTOSTUDENTFILE. ORGANIZATIONISINDEXED.RECORDKEYISSTUD-ID.數(shù)據(jù)部定義如下:FDIN-FILE.01STUDENT-RECORD.05STUD-IDPIC9(03).05STUD-NAMEPICX(20).05STUD-BIRTH.10BIRTH-YYYYPIC9(04).10BIRTH-MMPIC9(02).10BIRTH-DDPIC9(02).六.VSAM文件(Virtual Storage Access Method)VSAM文件在過(guò)程部順序讀取記錄:ACCESSM

38、ODE SPROCEDURE DIVISION. OPENINPUTIN-FILE. READIN-FILE./101LILEI_19900521 READIN-FILE./102HANMEIMEI_19910610 READIN-FILE./103LUCI_19910520 CLOSEIN-FILE.指定KEY值讀取記錄:ACCESS MODE RPROCEDURE DIVISION. OPENINPUTIN-FILE. MOVE101TOSTUD-ID. READIN-FILE./101LILEI_19900521 MOVE102 TOSTUD-ID READIN-FILE./102HAN

39、MEIMEI_19910610 CLOSEIN-FILE.指定KEY值范圍,順序讀取在KEY值范圍內(nèi)的一組記錄:ACCESS MODE DPROCEDURE DIVISION. OPENINPUTIN-FILE. MOVE101TOSTUD-ID. STARTIN-FILEKEY IS STUD-ID. READIN-FILENEXT./102HANMEIMEI_19910610 READIN-FILENEXT./103LUCI_19910520 CLOSEIN-FILE.六.VSAM文件(Virtual Storage Access Method)6. VSAM文件的建立七.各部之間的關(guān)系I

40、DENTIFICATIONDIVISION.PROGRAM-ID.PROGRAM1.給程序加上標(biāo)識(shí)以便識(shí)別ENVIRONMENTDIVISION.CONFIGRATIONSECTION.INPUT-OUTPUTSECTION.FILE-CONTROL.SELECTPRODFILE ASSIGN TO FILE1.描述程序中用到的文件與外部文件的關(guān)系及控制信息DATA DIVISION.FILE SECTION.FD PRODFILE LABEL RECORD IS STANDARD.01 PROD-REC PICX(200). WORKING-STORAGE SECTION.01 WS-VAR

41、IBALES. 05 WS-I PIC9(02).描述程序中用到的所有文件及其記錄中各數(shù)據(jù)項(xiàng)的屬性及程序中用到的所有中間數(shù)據(jù)項(xiàng)的描述.七.各部之間的關(guān)系PROCEDURE DIVISION.MAIN-RTNSECTION. PERFORM 處理節(jié)3-RTNPERFORM 處理節(jié)2-RTN PERFORM 處理節(jié)1-RTN.MAIN-EXT.STOP RUN.處理節(jié)1-RTNSECTION. 語(yǔ)句序列1 語(yǔ)句序列N.處理節(jié)1-EXT.EXIT.程序的核心部分,他決定計(jì)算機(jī)進(jìn)行什么操作.如,文件的讀寫(xiě)及其他處理七.各部之間的關(guān)系PROCEDURE DIVISION. ABEND-RTNSECTIO

42、N. 語(yǔ)句序列1 語(yǔ)句序列N.ABEND-EXT.GOBACK.程序出錯(cuò)時(shí)處理。輸出程序出錯(cuò)信息為RETURN-CODE賦值關(guān)閉文件GOBACK 語(yǔ)句 八.程序舉例1.例1 讀入一組產(chǎn)品銷(xiāo)售記錄,每讀入一個(gè)記錄,計(jì)算出銷(xiāo)售總額(數(shù)量X單價(jià)).然后輸出該產(chǎn)品的全部數(shù)據(jù).數(shù)據(jù)形式如下:1 9 9 2 1 2 3 1 0 0 0 0 0 1 A A A A 0 1 0 0 5 0 0 01 9 9 3 1 2 3 1 1 0 0 0 0 1 B B B B 0 2 0 0 6 0 0 0- - - - -DATE PRODCODE CUST AMT PRICE程序如下:IDENTIFICATIOND

43、IVISION.PROGRAM-ID.PEXAM1.ENVIRONMENTDIVISION.CONFIGRATIONSECTION.INPUT-OUTPUTSECTION.FILE-CONTROL.SELECTINPUT-FILEASSIGNTOFILE1 ORGANIZATIONISSEQUENTIAL ACCESSMODEISSEQUENTIAL FILE STATUSISWS-INPUT-FILE-STATUS.八.程序舉例SELECTOUTPUT-FILEASSIGNTOFILE2 ORGANIZATIONISSEQUENCIAL ACCESSMODEISSEQUENCIAL FILE

44、STATUSISWS-OUTPUT-FILE-STATUS.DATADIVISION.FILLESECTION.FDINPUT-FILE.01IN-REC.05DATE PIC 9(8). 05PROD-CODEPIC 9(6). 05CUSTOMER-CODEPIC X(4). 05QUANTITYPIC 9(4). 05UNIT-PRICE PIC 9(4).FDOUTPUT-FILE.01OUT-REC. 05DATEPIC 9999B99B99. 05FILLERPIC X(5) 05PROD-CODEPIC 9(6). 05FILLERPIC X(5). 八.程序舉例05CUSTOM

45、ER-CODEPIC X(4). 05FILLERPIC X(5). 05QUANTITYPIC ZZZ9. 05FILLERPIC X(5).05UNIT-PRICEPIC $(5). 05FILLERPIC X(5). 05SALES-VALUEPIC $(9).WORKING-STORAGESECTION.01WS-VARIBLES.05WS-INPUT-FILE-STATUS PIC9(2).05WS-OUTPUT-FILE-STATUSPIC9(2).PROCEDUREDIVISION.A000-MAINSECTION.PERFORMA100-OPEN-FILESPERFORMR00

46、0-READ-FILEPERFORMA200-PROCESS-RECORD UNTIL WS-INPUT-FILE-STATUS = 10PERFORMA300-CLOSE-FILES.A000-EXIT.STOP RUN.八.程序舉例A100-OPEN-FILESSECTION.OPENINPUTINPUT-FILEOUTPUTOUTPUT-FILE.IFWS-INPUT-FILE-STATUS NOT= 0DISPLAYINPUT-FILE OPEN NOT SUCCESSFULPERFORMZ000-ABENDEND-IFIFWS-OUTPUT-FILE-STATUS NOT= 0DIS

47、PLAYOUTPUT-FILE OPEN NOT SUCCESSFULPERFORMZ000-ABEND END-IF.A100-OPEN-FILES-EXT.EXIT.A200-PROCESS-RECORDSECTION.MOVECORRIN-RECTOOUT-REC COMPUTE SALES-VALUE = QUANTITY OF IN-REC * UNIT-PRICE OF IN-REC PERFORMW000-WRITE-FILE PERFORMR000-READ-FILE.A200-PROCESS-RECORD-EXT.EXIT.A300-CLOSE-FILESECTION. CL

48、OSEINPUT-FILE OUTPUT-FILE.A300-CLOSE-FILE-EXT.EXIT.八.程序舉例R000-READ-FILESECTION.READINPUT-FILE IF ( WS-INPUT-FILE-STATUS NOT= 0 AND WS-INPUT-FILE-STATUS NOT= 10) DISPLAY INPUT-FILE READ NOT SUCCESSFUL PERFORM Z000-ABENDEND-IF.R000-READ-FILE-EXT.EXIT.W000-WRITE-FILESECTION.WRITEOUT-RECIFWS-OUTPUT-FILE

49、-STATUS NOT= 0DISPLAY OUTPUT-FILE WRITE NOT SUCCESSFULPERFORMZ000-ABEND END-IF.W000-WRITE-FILE-EXT.EXIT.Z000-ABENDSECTION. DISPLAYPROGRAM ABEND ! PERFORMA300-CLOSE-FILES MOVE16TORETURN-CODE.Z000-ABEND-EXT. GOBACK.輸出的數(shù)據(jù)形式如下:1992 12 31 000001 AAAA 100 $5000 $5000001993 12 31 100001 BBBB 200 $6000 $120

50、0000八.程序舉例2.例2 Program : INVI300 Update inventory file (random)File Description UseVALTRAN Valid inventory transaction fileInputINVMAST Inventory master fileUpdateERRTRAN Unmatched inventory transaction fileOutputProcess specificationsThis program updates an inventory master file (INVMAST) based on

51、the data in a sequential file of valid inventory transaction records (VALTRAN). The inventory master file is indexed by item number and updated randomly.If the program finds a master record with the same item number as a transaction, it uses the transaction data to update the master record .It does

52、this by increasing the on hand quantity in the master record by thereceipt quantity in the transaction record.If the program cannot find a master record for a transaction, it writes the transaction record on the file of error transactions (ERRTRAN). The record format for ERRTRAN is same as for VALTR

53、AN.The basic processing requirements are:1. Read a transaction record.2. Read the master record with the same item number as in the transaction record.3. If the master record is found , update and rewrite the matching master record.4. If the transaction is not found , write the transaction record on

54、 the file of error transactions.八.程序舉例程序如下:IDENTIFICATIONDIVISION.PROGRAM-ID.INV1300.ENVIRONENTDIVISON.INPUT-OUTPUTSECTION.FILE-CONTROL. SELECTVALTRANASSIGNTOSYS020-AS-VALTRAN. SELECTINVMASTASSIGNTOSYS021-INVMATORGANIZATIONISINDEXEDACCESS ISRANDOMRECORD KEY ISMR-ITEM-NOFILE STATUSISINVMAST-ERROR-COD

55、E. SELECTERRTRANASSIGNTOSYS022-AS-ERRTRAN.DATADIVISION.FILESECTION.FDVALTRANLABELRECORDSARESTANDARD.01VALID-TRANSACTION-AREAPICX(21).FDINVMASTLABEL RECORDSARESTANDARD.01MASTER-RECORD-AREA.05MR-ITEM-NOPICX(5).05FILLERPICX(45).八.程序舉例FDERRTRANLABELRECORDSARESTANDARD.01ERROR-TRANSACTIONPICX(21).WORKING-

56、STORAGESECTION.01SWITCHES.05VALTRAN-EOF-SWITCHPICXVALUEN. 88VALTRAN-EOFVALUEY.05 MASTER-FOUND-SWITCHPIC X. 88MASTER-FOUNDVALUEY.01FILE-STATUS-FIELD.05INVMAST-ERROR-CODEPIC X(2).01INVENTROY-TRANSACTION-RECORD.05IT-ITEM-NOPICX(5).05IT-VENOR-NOPICX(5).05IT-RECEIPT-DATEPICX(6).05IT-RECEIPT-QUANTITYPICS9

57、(5).01INVENTORY-MASTER-RECORD.05IM-DESCRIPTIVE-DATA.10IM-ITEM-NOPICX(5). 10IM-ITEM-DESCPICX(20). 10IM-UNIT-COSTPICS9(3)V9(2). 10IM-UNIT-PRICEPICS9(3)V9(2).八.程序舉例05IM-INVENTORY-DATA.10IM-REORDER-POINTPICS9(5). 10IM-ON-HANDPICS9(5). 10IM-ON-ORDERPICS9(5). PROCEDUREDIVISION.A000-UPDATE-INVENTORY-FILE.O

58、PENINPUTVALTRAN I-OINVMAST OUTPUTERRTRANPERFORM B000-PROCESS-INVENTORY-TRAN THRU B000-EXIT UNTIL VALTRAN-EOFCLOSEVALTRAN INVMAST ERRTRANDISPLAYPROGRAM INV1300 NORMAL ENDGOBACK.八.程序舉例B000-PROCESS-INVENTORY-TRAN.PERFORMB100-READ-INVENTORY-TRAN IFNOTVALTRAN-EOFPERFORM B200-READ-INVENTORY-MASTER IFMASTER-FOUND PERFORM B300-UPDATE-INVENTORY-MASTER ELSE PERFORM B400-WRITE-ERROR-TRAN END-IFEND-IF.B000-EXIT.EXIT.B100-READ-INVENTRORY-TRAN.READ VALTRAN INTO INVENTORY-TRANSACTIO

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論