![COBOL基礎(chǔ)培訓(xùn)-課件_第1頁](http://file4.renrendoc.com/view/a5f0cc11f8803d3f246d8cfa2d2d1013/a5f0cc11f8803d3f246d8cfa2d2d10131.gif)
![COBOL基礎(chǔ)培訓(xùn)-課件_第2頁](http://file4.renrendoc.com/view/a5f0cc11f8803d3f246d8cfa2d2d1013/a5f0cc11f8803d3f246d8cfa2d2d10132.gif)
![COBOL基礎(chǔ)培訓(xùn)-課件_第3頁](http://file4.renrendoc.com/view/a5f0cc11f8803d3f246d8cfa2d2d1013/a5f0cc11f8803d3f246d8cfa2d2d10133.gif)
![COBOL基礎(chǔ)培訓(xùn)-課件_第4頁](http://file4.renrendoc.com/view/a5f0cc11f8803d3f246d8cfa2d2d1013/a5f0cc11f8803d3f246d8cfa2d2d10134.gif)
![COBOL基礎(chǔ)培訓(xùn)-課件_第5頁](http://file4.renrendoc.com/view/a5f0cc11f8803d3f246d8cfa2d2d1013/a5f0cc11f8803d3f246d8cfa2d2d10135.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、COBOL基礎(chǔ)培訓(xùn)因特馳軟件北京有限公司課程設(shè)置課程安排上課:3天,6節(jié)課,每節(jié)課50分鐘練習(xí):18天驗收:作業(yè) + 測試(筆試 + 上機(jī))學(xué)習(xí)方法 (理論學(xué)習(xí) + 實際操作)1.上課要做好課堂筆記2.課下熟讀PPT,掌握PPT上的所有要點知識3.結(jié)合練習(xí),在實操中掌握COBOL的編程技巧4.學(xué)習(xí)重點在于PPT中涉及到的內(nèi)容學(xué)習(xí)目標(biāo)根據(jù)項目的程序式樣書,編寫出合格的COBOL程序。培訓(xùn)內(nèi)容一COBOL概述二標(biāo)識部三環(huán)境部四數(shù)據(jù)部五過程部六VSAM文件七各部之間的關(guān)系八程序舉例九COBOL的編譯、鏈接、執(zhí)行十COBOL語言編程規(guī)范一.COBOL概述什么是COBOL語言COBOL語言的特點COBO
2、L程序的基本結(jié)構(gòu)COBOL程序結(jié)構(gòu)示意圖COBOL程序的書寫區(qū)域COBOL程序的書寫格式COBOL的字符一.COBOL概述1. 什么是COBOL語言COBOL是Common Business Oriented Language的縮寫,是面向商業(yè)通用編程語言。它是專門為商業(yè)數(shù)據(jù)處理而設(shè)計的計算機(jī)高級程序語言。廣泛用于數(shù)據(jù)管理領(lǐng)域。應(yīng)用于多個行業(yè)如:銀行,證券,金融,制造,等等。1960年4月正式發(fā)表COBOL 61。目前最新版COBOL 2002。2. COBOL語言的特點描述性好,能根據(jù)需要描述各種形式的數(shù)據(jù)。適合大批量數(shù)據(jù)處理,能對數(shù)據(jù)進(jìn)行嚴(yán)密的組織(運算簡單但運算量大,邏輯運算多)語法接近
3、自然語言(英語),成文自明。遵循ISO標(biāo)準(zhǔn),通用性強(qiáng),移植方便。格式固定,結(jié)構(gòu)嚴(yán)謹(jǐn),層次分明。缺點是比較繁瑣。一.COBOL概述3. COBOL程序的基本結(jié)構(gòu)標(biāo)識部(IDENTIFICATION DIVISION) 用來標(biāo)識程序名稱,記錄程序的文檔記錄信息如作者和日期等。環(huán)境部(ENVIRONMENT DIVISION) 用來描述程序運行和編譯的計算機(jī)環(huán)境,內(nèi)部數(shù)據(jù)文件與系統(tǒng)設(shè)備的對應(yīng)關(guān)系。數(shù)據(jù)部(DATA DIVISION) 定義程序中所有數(shù)據(jù)的類型和所占內(nèi)存的大小。過程部:(PROCEDURE DIVISION) 編寫程序要執(zhí)行的語句,是程序的核心。一.COBOL概述4. COBOL程序結(jié)
4、構(gòu)示意圖cobol標(biāo)識部過程部數(shù)據(jù)部環(huán)境部段節(jié)段句子節(jié)描述體句子節(jié)段句子一.COBOL概述COBOL程序結(jié)構(gòu)示意圖部下設(shè)置節(jié),節(jié)下設(shè)置段或描述體,段下或節(jié)下包含句子。節(jié)是由一個或多個段組成的,節(jié)的定義從節(jié)名開始到下一個節(jié)名或文本結(jié)束為止。定義格式:節(jié)名 SECTION.(節(jié)名分為系統(tǒng)定義和用戶自定義兩種)段由一個或多個句子組成,段的定義從段名開始到下一個段名或文本結(jié)束為止。定義格式:段名. (段名+點號)(段名分為系統(tǒng)定義和用戶自定義兩種)文件描述體只能在數(shù)據(jù)部中定義,用于描述外部文件的屬性及其記錄的格式。定義格式:FD 文件名.(文件描述體用FD(File Description)語句定義)
5、句子是完整的指令,用相應(yīng)的動詞表示其操作,以一個句號加一個以上的空格來結(jié)束。一.COBOL概述5. COBOL程序的書寫區(qū)域標(biāo)準(zhǔn)COBOL程序每行80列,被分為五個區(qū)域第0106列為 “標(biāo)號區(qū)” 標(biāo)號是6位數(shù)字,應(yīng)從小到大,但不一定連續(xù),標(biāo)號只是方便查閱程序,可以省略。第07列為 “注釋區(qū)”,“DEBUG標(biāo)識區(qū)” “*“:表示本行是注釋行,用于注釋程序說明。 “D“ :表示本行是DEBUG行,用于程序調(diào)試。第0811列為 “A區(qū)” 程序中下列語句必須從該區(qū)開始書寫:部名、節(jié)名、段名,描述符(FD),01和77層。第1272列為 “B區(qū)” 程序正文部分,過程部語句必須從該區(qū)開始書寫。第7380列
6、為 “注釋區(qū)” 行注釋區(qū),寫入此區(qū)的內(nèi)容在編譯時被忽略,(一般不推薦使用)一.COBOL概述6. COBOL程序的書寫格式大小寫字母等價,但引號中的字符除外。 如:MOVE A TO B = MOVE a TO b DISPLAY HELLO DISPLAY hello相鄰的兩個COBOL字之間有一個以上的空格。運算符和等號左右必須各有一個以上的空格;圓括號外側(cè)必須有一個以上的空格,內(nèi)側(cè)不必。如:COMPUTE R = A ( B + C ) / D逗號,句號,分號左邊不能有空格,而右邊應(yīng)有。 如:DISPLAY A= , A一.COBOL概述7. COBOL的字符COBOL字符集包括:數(shù)字0
7、 - 9 ,字母 A - Z ,a - z ,15個專用符號:+ - * / = ,(逗號) .(句號) ;(分號) (引號) $ ( ) 空格。屬于系統(tǒng)字符集而不屬于COBOL字符集的字符,只能出現(xiàn)在COBOL程序的字符串或注釋行中。如:DISPLAY #HELLO# COBOL字是由上述字符組成的最小單位。(保留字 ,用戶字)保留字:規(guī)定五種類型專門用途的字(300多個)鍵字:如:MOVE ,ADD 等可選字:如:USAGE IS 等專用字符:如運算符:+ - * / 等 ;比較符 = 等表意常量:如:ZERO/ZEROS/ZEROES;SPACE/SPACES;QUOTE/QUOTES;
8、HIGH-VALUE/HIGH-VALUES;LOW-VALUE/LOW-VALUES;ALL;NULL/NULLS專用寄存器:如:LENGTH OF;RETURN-CODE等用戶字:用戶自定義的名字。如:程序名,文件名,節(jié)名,段名,數(shù)據(jù)名等一.COBOL概述7. COBOL的字符數(shù)據(jù)名:相當(dāng)于其它語言中的變量名,它代表一個具體的數(shù)據(jù)項。只能由字母(至少一個),數(shù)字和連字符“-“組成,連字符不能出現(xiàn)在兩端,不能包含空格數(shù)據(jù)名長度不能超過30個字符 (lengthBDIVIDEAINTO B GIVINGC 是指B/A-CDIVIDEABY BGIVINGC是指 A/B-C五.過程部(PROCE
9、DURE DIVISION)7.算數(shù)運算語句COMPUTE語句:綜合算數(shù)運算語句,使用算數(shù)表達(dá)式完成計算一般格式:COMPUTE標(biāo)示符1,標(biāo)示符2 = 算數(shù)表達(dá)式運算符優(yōu)先級由高到低順序為:()、正負(fù)號、*、* 或 / 、+ 或 例如:C = 3 ,D = 5 ,E = 2 ,F(xiàn) = 1COMPUTE A,B = -(C + D)* 2 / E * 3 FC 則:A = -3、B = -3ROUNDED語句:四舍五入。用于帶有小數(shù)點的十進(jìn)制數(shù)運算。當(dāng)計算結(jié)對小數(shù)點最右邊的數(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五.過程部(PROCEDURE DIVISION)7.算數(shù)運算語句ON SIZE ERROR語句:長度溢出判斷。十進(jìn)制數(shù)運算時,計算結(jié)果比數(shù)據(jù)項的長度要長,則被稱為長度溢出。當(dāng)發(fā)生溢出錯誤時,按程序設(shè)計者事先指定的操作處理。例如: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,此時發(fā)生長度溢出。當(dāng)ROUNDED 與ON SIZE ERR
11、OR 一起使用時,先按ROUNDED 作四舍五入處理,再判斷是否溢出。REMAINDER語句:用于除法語句(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ù)部中對商和余數(shù)的描述如用ROUNDED語句,它只對商起作用,余數(shù)不作四舍五入處理長度溢出也只檢查商的值是否溢出,而不檢查余數(shù)五.過程部(PROCEDURE DIVISION)8.字符串語句:STRING、UNSTRING、INSPECTST
12、RING語句:用來將多個非數(shù)值型數(shù)據(jù)項的值連接后發(fā)送到一個接收數(shù)據(jù)項中,在合并過程中可以刪除某些指定的字符。一般格式:STRING str1DELIMITED BYsymbol1 str2DELIMITED BYsymbol2 INTO strn WITH POINTER position1 ON OVERFLOW perform . END-STRINGDELIMITED BY SIZE:按發(fā)送項的長度全部傳送到接收項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ā)送項空格之前的字符串傳送到接收項STRING A, B, C DELIMITED BY SPACE INTO D/ D=ABCJKLXYZ* (末尾七個*)五.過程部(PROCEDURE DIVISION)8.字符串語句:STRING、UNSTRING、INSPECTSTRING語句:DELIMITED BY 字符常量:使用其它字符作為定界符,各個發(fā)送項可以使用不同的定界符STRING A DELIMITED BY B B DELIMITEDBYL C DEL
14、IMITED BY MINTO D./ D=AJKXYZ_* (末尾9個*)可以在傳送中插入所需字符STRING A, *, B, =, C DELIMITED BY SPACE INTO D/ D=ABC*JKL=XYZ* (末尾五個*)POINTER:如果不想從接收項的最左端開始接收字符,可以使用POINTER短語指定從某一字符位開始接收字符MOVE 3 TO P.STRING A, B, C DELIMITED BY SPACEWITH POINTER PINTO D./ D=*ABCJKLXYZ* (頭部兩個,末尾五個*)五.過程部(PROCEDURE DIVISION)8.字符串語句
15、:STRING、UNSTRING、INSPECTSTRING語句:ON OVERFLOW :如果接收項的字符個數(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ù)項必須是初等項指針項必須是一個整型的初等項STRING語句結(jié)束后,接收項中未送入的字符位置上保持原有內(nèi)容,而不是自動設(shè)置空格五.過程部(PROCEDURE DIVISION)8.字符串語句:STRING、UNSTRING、
16、INSPECTUNSTRING語句:將一個發(fā)送字符串拆成若干個接收字符串,是STRING語句的逆操作可以使用DELIMITED子句設(shè)置分解時的定界符。自左向右累計字符,直到遇見定界符,符號左面的內(nèi)容按MOVE語句的規(guī)則傳送到接收項。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_五.過程部(PROCEDURE DIVISION)8.字符串語句:STRING、UNSTRING、INSPECTINSPECT語句:檢查一個字符串?dāng)?shù)據(jù)項中某個字符INSPECT TALLYING:統(tǒng)計字符串出現(xiàn)的次數(shù)INSPECT A TALLYING N FOR SPACE.檢查數(shù)據(jù)項A中是否有空格,找到一個就將計數(shù)器N加1INSPECT REPLACING :用別的字符串替換該字符串INSPECT A REPLACING SPACE BY ,.將數(shù)據(jù)項A中所有空格替換成逗號INSPECT TALLYING R
18、EPLACING :替換并統(tǒng)計字符串的次數(shù)INSPECT A TALLYING N FOR ALL SPACEREPLACING ALL SPACE BY ,.檢查數(shù)據(jù)項A中空格的個數(shù),并將數(shù)據(jù)項A中所有空格替換成逗號五.過程部(PROCEDURE DIVISION)9.IF語句:條件轉(zhuǎn)移語句。根據(jù)給出的判斷條件是否滿足,來決定執(zhí)行哪一部分語句一般格式:IF條件 語句組1ELSE 語句組2END-IF.關(guān)系運算符:ISGREATERTHANISLESSTHANISNOTLESSTHANNOT =ISLESSTHANOREQUALTO=五.過程部(PROCEDURE DIVISION)9.IF語
19、句:條件轉(zhuǎn)移語句。根據(jù)給出的判斷條件是否滿足,來決定執(zhí)行哪一部分語句關(guān)系運算規(guī)則:數(shù)值變量之間按其代數(shù)值進(jìn)行比較3-200字母型數(shù)據(jù)之間字典序進(jìn)行比較xcap ccobol字符型數(shù)據(jù)之間按其編碼規(guī)則進(jìn)行比較ASCII編碼:1 A 在條件判斷表達(dá)式中,只能將同類型的數(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.五.過程部(PROCEDURE DIVISION)9.IF
20、語句:條件轉(zhuǎn)移語句。根據(jù)給出的判斷條件是否滿足,來決定執(zhí)行哪一部分語句復(fù)合條件:由若干個簡單的“條件”組合而成的條件,使用邏輯運算符AND(與),OR(或),如果在一個IF語句中同時用到AND,OR,其優(yōu)先級是:AND ORIF ( A1000 AND A 0類型條件:檢查數(shù)據(jù)項的類型是否符合指定的要求,即數(shù)據(jù)項的內(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五.過程部(PRO
21、CEDURE DIVISION)9.IF語句:條件轉(zhuǎn)移語句。根據(jù)給出的判斷條件是否滿足,來決定執(zhí)行哪一部分語句條件名條件:簡單的說,條件名就是用一個數(shù)據(jù)名代表一個條件例如:為鼓勵存款,存款數(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是條件名,緊跟在條件變量之后,必須用層號88定義VULUE子句的作用不是賦初值,而是為條件變量的一個可能值命名對于 “88 T1 VALUE 0 THRU 999” 應(yīng)理解為:當(dāng)CK的值在0999時,條件T1為“真”在過程部可以直接使用條件名條件:IF T1 MOVE 0.02 TO RATE.IF ( CK = 0 AND CK 10.PERFORM過程名1 VARYING標(biāo)識符1 FROM初值(整數(shù)/標(biāo)示符) BY 步長(整數(shù)/標(biāo)示符) UNTIL 條件PERFORMTEST-RTN VARYINGT1FROM1BY1UNTIL T1 10. 循環(huán)
23、變量T1的初值可以為正,負(fù)或零;步長不能為零! 循環(huán)變量T1的值在每次循環(huán)中自動按步長增加 五.過程部(PROCEDURE DIVISION)11. PERFORM語句:作為執(zhí)行語句和實現(xiàn)循環(huán)控制語句PERFORM語句可以實現(xiàn)多重循環(huán)一般格式:PERFORM段名1 THRU 段名2 VARYING參數(shù)1FROM 初值1 BY 步長1 UNTIL 條件1 AFTER 參數(shù)2 FROM 初值2 BY 步長2 UNTIL 條件2 AFTER 參數(shù)3 FROM 初值3 BY 步長3 UNTIL 條件3PERFORM T VARYINGXFROM 1 BY 1 UNTIL X 9 AFTERYFROM
24、1 BY 1 UNTIL Y XPERFORM 語句的六種形式: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五.過程部(PROCEDURE DIVISION)12. EXIT語句:提供一組過程的公共出口,或者說它指出了被調(diào)用過程的邏輯終點,一般用作PERFORM語句序列的出口。EXIT語句必須是段中唯一的語句,前面必須有
25、段名。13. CONTINUE語句:用來指定一個空操作,即什么也不做,用來占位置。程序?qū)㈨樞驁?zhí)行到CONTINUE語句的下一條語句。14. GO TO語句:用來改變程序的執(zhí)行順序,程序執(zhí)行到此將無條件轉(zhuǎn)移到指定的標(biāo)號(段名/節(jié)名)一般格式:GO TO 標(biāo)號由于打亂了原來程序正常的執(zhí)行順序,降低了程序的可讀性,因此,嚴(yán)禁使用。 15. CALL語句:調(diào)用子程序子程序概述:PERFORM語句只能在同一程序中多次調(diào)用某一語句序列,如果被調(diào)用部分較復(fù)雜或需要被其他程序使用時,可以將其編寫為單獨的一個程序,即子程序,調(diào)用子程序的為主程序。使用子程序的優(yōu)點:簡化主程序,使程序結(jié)構(gòu)清晰子程序功能單一,易于編
26、寫和調(diào)試,減少錯誤可由多人完成不同子程序,從而完成復(fù)雜任務(wù)只需重編譯修改的子程序,而不必對所有源程序編譯子程序可以重用,減少重復(fù)勞動五.過程部(PROCEDURE DIVISION)15. CALL語句:調(diào)用簡例:主程序子程序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.五.過程部(PROCEDURE DIVISION)15. CALL語句:說明:為主程序和各個子程序起有意義的program-id,便于區(qū)分主程序使用CALL語句按program-id而不是數(shù)據(jù)集名調(diào)用子程序,注意要使用引號主程序使用CALL USING 子句傳遞參數(shù)子程序LINKAGE節(jié)中定義用來接受主程序傳遞的參數(shù),可以是初等項,或組合項參數(shù)的數(shù)據(jù)結(jié)構(gòu)可以不同,但長度必須相同子程序參數(shù)不能使用VALUE子句賦初值子程序
29、在過程部頭之后使用USING接受主程序的參數(shù),參數(shù)個數(shù)必須和CALL語句中USING子句參數(shù)個數(shù)相同在執(zhí)行時遇到GOBACK語句,子程序運行完了,主程序繼續(xù)運行CALL之后的語句16. GOBACK語句:返回語句。停止運行,將控制權(quán)返回給上一級。子程序必須用GOBACK,而不能用STOP,因為STOP停止的是一個RUN UNIT(運行單元)。 17. STOP RUN語句:停止語句。STOP RUN在邏輯上應(yīng)該是程序的最后一個語句。STOP RUN 執(zhí)行后,程序停止運行,停止后不能再接著運行,如需要,可重新運行一次。主程序一般通過STOP RUN語句結(jié)束運行單元。六.VSAM文件(Virtua
30、l Storage Access Method)什么是VSAMVSAM的組織形式和存取方法VSAM文件在環(huán)境部VSAM文件在數(shù)據(jù)部VSAM文件在過程部VSAM文件的建立六.VSAM文件(Virtual Storage Access Method)什么是VSAMVSAM是一種虛擬存取方法,它是為了與直接存取存儲設(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相對記錄數(shù)據(jù)組織Relative Organization相對記錄數(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)行存取,也可以指定記錄的相對字節(jié)地址對特定記錄進(jìn)行存取。KSDS鍵字順序數(shù)據(jù)集記錄由索引部分和數(shù)據(jù)部分組成,索引部分包含樹型結(jié)構(gòu)的多級索引。數(shù)據(jù)部分內(nèi)的記錄按鍵值順序排列??梢园存I值進(jìn)行順序存取,也可利用索引,根據(jù)鍵值進(jìn)行直接存取。RRDS相對記錄數(shù)據(jù)集文件空間被劃分成若干邏輯框,每個邏輯框只存放一個記錄,從第一個邏輯框開始賦予連續(xù)的記錄號,記錄以其相對記錄號順序存放,訪問也是通過相對記錄號來進(jì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在程序中的名稱。RRDS相
34、對記錄數(shù)據(jù)集SELECT內(nèi)部文件名ASSIGN TO外部文件名.ORGANIZATIONISRELATIVE.RELATIVEKEYIS變量名.ACCESSMODEIS(SEQUENCIAL, RANDOM, DYNAMIC). FILESTATUSIS變量名.FILE STATUS用于指定文件狀態(tài)返回碼在程序中的名稱。六.VSAM文件(Virtual Storage Access Method)4.VSAM文件在數(shù)據(jù)部VSAM文件的描述與一般的PS文件類似,如果為KSDS文件,需要在記錄中指定REORD-KEY數(shù)據(jù)項,即在環(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文件在過程部VSAM文件的操作與一般的PS文件類似,如果為KSDS文件,在讀取記錄時,可順序讀取還可以通過指定KEY值來讀取特定的記錄,或符合指定KEY值范圍的一組記錄。在寫入KSDS文件時要注意,KEY值一定要唯一,否則會出錯。如:外部文件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文件在過程部順序讀取記錄: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)識以便識別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ù)項的屬性及程序中用到的所有中間數(shù)據(jù)項的描述.七.各部之間的關(guān)系PROCEDURE DIVISION.MAIN-RTNSECTION. PERFORM 處理節(jié)3-RTNPERFORM 處理節(jié)2-RTN PERFORM 處理節(jié)1-RTN.MAIN-EXT.STOP RUN.處理節(jié)1-RTNSECTION. 語句序列1 語句序列N.處理節(jié)1-EXT.EXIT.程序的核心部分,他決定計算機(jī)進(jìn)行什么操作.如,文件的讀寫及其他處理七.各部之間的關(guān)系PROCEDURE DIVISION. ABEND-RTNSECTIO
42、N. 語句序列1 語句序列N.ABEND-EXT.GOBACK.程序出錯時處理。輸出程序出錯信息為RETURN-CODE賦值關(guān)閉文件GOBACK 語句 八.程序舉例1.例1 讀入一組產(chǎn)品銷售記錄,每讀入一個記錄,計算出銷售總額(數(shù)量X單價).然后輸出該產(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東公務(wù)員考試申論試題(B卷)
- 系統(tǒng)設(shè)備安裝工作承攬合同(3篇)
- 2025年崗?fù)べ徺I合同示范文本
- 2025年協(xié)調(diào)解除合同指導(dǎo)
- 2025年工程勘察服務(wù)項目規(guī)劃申請報告模板
- 2025年企業(yè)零成本用車服務(wù)合同范本
- 2025年苯噻草胺項目立項申請報告模式
- 2025年二手奢侈品交易平臺合作協(xié)議
- 2025年協(xié)議書保證金實務(wù)指導(dǎo)
- 2025年體育場館租賃預(yù)付款協(xié)議
- GA/T 1499-2018卷簾門安全性要求
- 成長感恩責(zé)任高中主題班會-課件
- 化工裝置實用操作技術(shù)指南
- 建設(shè)項目全過程工程咨詢服務(wù)指引(咨詢企業(yè)版)(征求意見稿)
- 2020年度安徽省中考數(shù)學(xué)科目試卷
- 員工培訓(xùn)、考試、積分記錄表
- 風(fēng)冷熱泵主機(jī)改造-模塊機(jī)匯總
- 攝影攝像技術(shù)專業(yè)申請表
- 浙江省紹興市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 牡丹區(qū)中心醫(yī)院食源性疾病監(jiān)測培訓(xùn)課件
- 高中英語常用詞匯表(動詞、名詞、形容詞和副詞)
評論
0/150
提交評論