01-Cobol-基礎(chǔ)知識(shí)講義_第1頁(yè)
01-Cobol-基礎(chǔ)知識(shí)講義_第2頁(yè)
01-Cobol-基礎(chǔ)知識(shí)講義_第3頁(yè)
01-Cobol-基礎(chǔ)知識(shí)講義_第4頁(yè)
01-Cobol-基礎(chǔ)知識(shí)講義_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGE49關(guān)于COBOL的初步知識(shí)一.COBOL語(yǔ)言的特點(diǎn)COBOL是CommonBusiness-OrientedLanguage(公用面向商業(yè)的語(yǔ)言)的縮寫,主要供數(shù)據(jù)處理、數(shù)據(jù)收集及分析之用。COBOL自60年代初開始廣泛應(yīng)用于計(jì)算機(jī)應(yīng)用領(lǐng)域(商業(yè)和其他領(lǐng)域)。事實(shí)上,除了商業(yè)之外,各種管理工作都廣泛使用COBOL,如各種統(tǒng)計(jì)工作,財(cái)會(huì)工作,企業(yè)計(jì)劃編制,作業(yè)制度,情報(bào)檢索,人事管理等。COBOL針對(duì)商業(yè)世界的使用,是真正商用應(yīng)用程序開發(fā)的首選語(yǔ)言。適于數(shù)據(jù)處理領(lǐng)域。采用英語(yǔ)語(yǔ)法的高級(jí)語(yǔ)言,可讀性、可維護(hù)性、可移植性較強(qiáng)。通用性強(qiáng),標(biāo)準(zhǔn)化程度較高。結(jié)構(gòu)嚴(yán)謹(jǐn),層次分明。缺點(diǎn)是比較繁瑣。最簡(jiǎn)單的COBOL程序介紹例1:IDENTIFICATIONDIVISION.(標(biāo)識(shí)部)PROGRAM-ID.EXAM1.(程序標(biāo)識(shí)段)ENVIRONMENTDIVISION.(設(shè)備部)DATADIVISION.(數(shù)據(jù)部)PROCEDUREDIVISION.(過(guò)程部)A.DISPLAY‘THISISACOBOLPROGRAM.’.STOPRUN.例2:IDENTIFICATIONDIVISION.(標(biāo)識(shí)部)PROGRAM-ID.EXAM2.(程序標(biāo)識(shí)段)ENVIRONMENTDIVISION.(設(shè)備部)DATADIVISION.(數(shù)據(jù)部)WORKING-STORAGESECTION.(工作單元節(jié))APICTUREIS9(3).(對(duì)A進(jìn)行描述)77BPICTUREIS9(3).(對(duì)B進(jìn)行描述)PROCEDUREDIVISION.(過(guò)程部)S.ACCEPTA.(輸入A值)ACCEPTB.(輸入B值)ADDATOB.(A+B->B)DISPLAYA,B.(顯示A和B值)STOPRUN.COBOL程序的結(jié)構(gòu)部每個(gè)程序都包括四個(gè)部:IDENTIFICATIONDIVISION(標(biāo)識(shí)部)提供程序的一般性文檔說(shuō)明,主要用來(lái)指定源程序名。ENVIRONMENTDIVISION(環(huán)境部)列出程序中所用到的文件。程序中不需要外部文件時(shí),環(huán)境部為空,也可以省略部標(biāo)題。DATADIVISION(數(shù)據(jù)部)程序中所用到的全部數(shù)據(jù)(包括:文件數(shù)據(jù)—-用于輸入輸出、靜態(tài)數(shù)據(jù)、參數(shù)等)都應(yīng)在數(shù)據(jù)部中說(shuō)明它們的類型和所占內(nèi)存的情況。PROCEDUREDIVISION(過(guò)程部)包含構(gòu)成程序的過(guò)程性語(yǔ)句,用來(lái)給出程序要執(zhí)行的指令,使計(jì)算機(jī)產(chǎn)生相應(yīng)的操作。節(jié)和段標(biāo)識(shí)部下只有各個(gè)段。除標(biāo)識(shí)部以外,每個(gè)部下可以有若干個(gè)節(jié)(SECTION),每個(gè)節(jié)以“節(jié)頭”作標(biāo)識(shí)。每個(gè)節(jié)下又可包括若干段(PARAGRAPH),每個(gè)段用“段名”標(biāo)識(shí)。各個(gè)段內(nèi)有各種COBOL元素。句子,語(yǔ)句和子句在過(guò)程部中,每一段由若干個(gè)句子(Sentence)組成。一個(gè)句子是以英文句號(hào)來(lái)結(jié)束的。句子又由語(yǔ)句(Statement)組成。一個(gè)語(yǔ)句中又可以包含若干個(gè)子句(Clause)。注意:部標(biāo)題、節(jié)標(biāo)題、段名、數(shù)據(jù)項(xiàng)目描述及句子后必須用英文句號(hào)結(jié)束,否則程序無(wú)法編譯。描述體(描述款目)在數(shù)據(jù)部中有若干個(gè)節(jié),每個(gè)節(jié)中有若干個(gè)描述體,每個(gè)描述體又有若干個(gè)子句構(gòu)成。源程序的書寫格式1~6列,為“序號(hào)區(qū)”,為6位整數(shù)序號(hào),不是程序本身的內(nèi)容。序號(hào)不是必須的,但其所占區(qū)域要保留。第7列,為“指示符區(qū)(續(xù)行標(biāo)志區(qū))”。連接符“-”表示本行是緊接在上一行的后面?!?”或“/”表示本行為注釋行。“D”表示本行為調(diào)試行。8~11列,為“A區(qū)”,部頭,節(jié)頭,段頭,層號(hào)01,層號(hào)77以及文件描述符FD,程序結(jié)束標(biāo)題等應(yīng)從A區(qū)開始書寫,但不一定從第8列開始寫。12~72列(現(xiàn)在有時(shí)廠家規(guī)定可到80列),為“B”區(qū),過(guò)程部中的句子只能從B區(qū)開始書寫。73~80列,為“注釋區(qū)”。在寫程序時(shí),應(yīng)注意以下幾點(diǎn):1.大寫或小寫字母均可,習(xí)慣用大寫字母。2.相鄰的兩個(gè)字之間必須留一個(gè)以上的空格。3.運(yùn)算符和等號(hào)左右兩邊必須各留一個(gè)空格。4.逗號(hào),句號(hào),分號(hào)的左邊不能留空格,而右邊應(yīng)有空格。COBOL字符和COBOL單字COBOL字符集包括以下字符:0~9,a~z,A~Z,+-*/=,.;’”()<>$空格:COBOL單字分三種:保留字、用戶自定義字及系統(tǒng)名稱。COBOL單字的規(guī)則如下:字長(zhǎng)為1~30個(gè)字符之間。只能由字母,數(shù)字和連字符“-”組成,第一個(gè)和最后一個(gè)字符不能用連字符。字中不能出現(xiàn)空格。小寫字母與大寫字母等價(jià)。不能用保留字作為用戶定義字和系統(tǒng)名稱,但用戶定義字和系統(tǒng)名稱可以用同一個(gè)單詞。用戶自定義字:文件、數(shù)據(jù)、標(biāo)號(hào)、程序等所取的名稱。系統(tǒng)名稱:COBOL保留字,用于與操作環(huán)境通信,又COBOL廠家定義。分為:Computername、Implementersname、Languagename。保留字:有300多個(gè)。如:+、ACCEPT、ADD、BEFORE、DATA。常量數(shù)值常量(數(shù)字直接數(shù))例:123,+45.67,-89.65非數(shù)值常量(非數(shù)字直接數(shù)):字符串內(nèi)的引號(hào)用兩個(gè)連續(xù)引號(hào)表示。例:’abcd’,’Expired’,象征常量:用保留字表示某些常用常量(直接數(shù))。例:ZEROZEROSZEROESSPACESPACESHIGH-VALUEHIGH-VALUESLOW-VALUELOW-VALUESQUOTEQUOTESALL常量七.COBOL處理數(shù)據(jù)的特點(diǎn):層次的概念;記錄和文件的概念。八.程序文本的復(fù)制與替換操作COPY語(yǔ)句COPY語(yǔ)句用COBOL源文本text-name替換從COPY字開始到終止句號(hào)之前的內(nèi)容。REPLACE語(yǔ)句REPLACE語(yǔ)句將COBOL源程序某個(gè)段中的文本進(jìn)行替換。替換從REPLACE語(yǔ)句的第一個(gè)格式開始,到REPLACEOFF語(yǔ)句結(jié)束。第二章標(biāo)識(shí)部和環(huán)境部標(biāo)識(shí)部(IDENTIFICATIONDIVISION)(一)必寫部分IDENTIFICATIONDIVISION.PROGRAM-ID.程序名.(二)任選部分一般格式:[AUTHOR.作者姓名][INSTALLATION.設(shè)計(jì)這個(gè)程序的公司或部門。][DATE-WRITTEN.編寫日期,可記入修訂史,修改日期、原因及人員。][DATE-COMPILED.編譯日期][SECURITY.保密程度的描述。]注:標(biāo)識(shí)部中的段標(biāo)題只能按部描述中指定的順序出現(xiàn)。環(huán)境部(ENVIRONMENTDIVISION)環(huán)境部指定程序中與特定計(jì)算機(jī)或操作系統(tǒng)相關(guān)的方面,指明用到哪些設(shè)備,哪些文件,將程序中用到的內(nèi)部文件名與外部文件(或外部設(shè)備)聯(lián)系起來(lái)。如果程序不需要任何環(huán)境部提供的項(xiàng)目,則可以省略環(huán)境部。一般格式:ENVIRONMENTDIVISION.CONFIGURATIONSECTION.配置節(jié)SOURCE-COMPUTER.OBJECT-COMPUTER.SPECIAL-NAMES.INPUT-OUTPUTSECTION.輸入/輸出節(jié)FILE-CONTROL.I-O-CONTROL.配置節(jié)包括SOURCE-COMPUTER,OBJECT-COMPUTER和SPECIAL-NAMES(專用名段)。SOURCE-COMPUTER段標(biāo)識(shí)編譯程序的計(jì)算機(jī)。若該段省略,則編譯程序的計(jì)算機(jī)是源計(jì)算機(jī)。如果指定WITHDEBUGGINGMODE從句,則編譯所有源調(diào)試行,否則把調(diào)試行作為說(shuō)明語(yǔ)句。OBJECT-COMPUTER段標(biāo)識(shí)編譯程序運(yùn)行的計(jì)算機(jī)。SPECIAL-NAMES段用于把系統(tǒng)中原規(guī)定的一些設(shè)備名或功能名或符號(hào)改為用戶自己指定的名字或符號(hào)。SPECIAL-NAMES.CLASSREAL-NUMBERIS"0123456789+-."可用于類條件測(cè)試DECIMAL-POINTISCOMMA.逗號(hào)用作小數(shù)點(diǎn),句號(hào)用作編輯符CURRENCYSIGNIS“Y”.表示貨幣符號(hào)的字符,DEFAULT$輸入輸出節(jié)輸入輸出節(jié)只用于文件,它把內(nèi)部文件與外部文件(包括外部設(shè)備)聯(lián)系起來(lái)。它有兩個(gè)段:文件控制段:FILE-CONTROL段是給文件命名,指出存放該文件的外部設(shè)備及其他有關(guān)文件控制信息。對(duì)每個(gè)文件包含一個(gè)項(xiàng)目。FILE-CONTROL.SELECTFILE-1ASSIGNTO“FILE-1.TXT”.SELECTFILE-2ASSIGNTODISK.SELECTFILE-3ASSIGNTOPRINTER.輸入輸出控制段:I-O-CONTROL段包含定義程序返回點(diǎn),不同文件共享的內(nèi)存區(qū)和多文件卷中文件位置的項(xiàng)目。數(shù)據(jù)部數(shù)據(jù)部的節(jié)數(shù)據(jù)部包含程序引用的所有數(shù)據(jù)的定義,如文件記錄、變量、表格和報(bào)表。COBOL將數(shù)據(jù)部分成節(jié),每個(gè)節(jié)是可選的,但程序中的節(jié)應(yīng)按指定順序定義。DATADIVISION.FILESECTION.文件節(jié)WORKING-STORAGESECTION.工作存儲(chǔ)節(jié)LINKAGESECTION.連接節(jié)COMMUNICATIONSECTION.通信節(jié)REPORTSECTION.報(bào)表節(jié)文件節(jié)程序中每一個(gè)輸入或輸出文件都要在文件節(jié)中定義。包括:文件名和文件屬性。文件中包括的記錄名。每個(gè)記錄中數(shù)據(jù)的層次關(guān)系。記錄中各數(shù)據(jù)項(xiàng)的數(shù)據(jù)形式和占內(nèi)存的大小。DATADIVISION.(數(shù)據(jù)部)FILESECTION.(文件節(jié))FDFILE-1.(文件名)LABELRECORDISOMITTEDDATARECORDISSTUDENT-SCORE.01STUDENT-SCORE.(記錄名)03NAMEPICX(10).03NUMPIC9(06).CORUSE-SCORE.05CORUSE-1PIC9(03).05CORUSE-2PIC9(03).05CORUSE-3PIC9(03).工作存儲(chǔ)節(jié)包含程序所需的臨時(shí)結(jié)果和初始化靜態(tài)數(shù)據(jù)的數(shù)據(jù)定義。WORKING-STORAGESECTION.77XPICS99VALUE-21.01APIC9(08).01B.03B1PICX(04).03B2PICX(02).03B3PICX(02).連接節(jié)本節(jié)只用于子程序,包含調(diào)用程序傳遞的數(shù)據(jù)(即參數(shù))。LINKAGESECTION.01LCMIN.COPYRCI001.01LCMOT.COPYRCJ001.通信節(jié)通信節(jié)描述作為程序間接口的數(shù)據(jù)和消息控制系統(tǒng),用以實(shí)現(xiàn)與通信設(shè)備相關(guān)的消息分析的COBOL方法。屬過(guò)時(shí)部分,很少使用。報(bào)表節(jié)報(bào)表節(jié)描述實(shí)現(xiàn)COBOL報(bào)告編寫工具的系統(tǒng)所需的數(shù)據(jù)。REPORTSECTION.RDEMPLOYEE-REPORTPAGELIMIT60LINESHEADING1FOOTING58FIRSTDETAIL3.二.COBOL數(shù)據(jù)的類型及層次(一)數(shù)據(jù)類型(1)numeric(數(shù)字)(2)numeric-edited(數(shù)字編輯)(3)alphabetic(字母)(4)alphanumeric(字母數(shù)字)(5)alphanumeric-edited(字母數(shù)字編輯)所有數(shù)據(jù)類型缺省作為字符串存放在內(nèi)存中,唯一可以用不同方式存儲(chǔ)的數(shù)據(jù)類別是數(shù)字型數(shù)據(jù)(通過(guò)USAGE子句)。對(duì)數(shù)字型數(shù)據(jù)制訂不同方式存儲(chǔ),提高計(jì)算效率。(二)數(shù)據(jù)的層次和層號(hào)COBOL中把有從屬關(guān)系的數(shù)據(jù)用層次關(guān)系來(lái)描述。數(shù)據(jù)的層次結(jié)構(gòu)是:記錄—組合項(xiàng)—基本項(xiàng)。層次規(guī)定如下:(1)用來(lái)描述數(shù)據(jù)的層次結(jié)構(gòu)的層號(hào)從01開始,到49結(jié)束,即可用的層號(hào)為01~49。(2)從屬項(xiàng)的層號(hào)比其上屬項(xiàng)的層號(hào)高。(3)如果幾個(gè)數(shù)據(jù)項(xiàng)都從屬于同一組合項(xiàng)但互不從屬,則這幾個(gè)數(shù)據(jù)項(xiàng)應(yīng)具有相同的層號(hào)。(4)77層項(xiàng)目用于某個(gè)組的數(shù)據(jù)項(xiàng),如程序中的臨時(shí)變量。(5)66層和88層是特殊層。88層是對(duì)特殊數(shù)據(jù)項(xiàng)目條件名保留的。(在講過(guò)程部的條件語(yǔ)句時(shí)再詳細(xì)介紹。)66層是用于更明現(xiàn)有數(shù)據(jù)項(xiàng)或數(shù)據(jù)項(xiàng)組。(講RENAMES語(yǔ)句時(shí)再介紹。)(三)限定數(shù)據(jù)(四)FILLER關(guān)鍵字需要定義部分記錄,但這部分在程序中永遠(yuǎn)不會(huì)用到,則可用保留字FILLER占有這個(gè)記錄部分的位置。舉例:一個(gè)打印用的記錄行,有固定的空格時(shí)。如果組項(xiàng)目不需按名稱引用,則可以用FILLER關(guān)鍵字作為數(shù)據(jù)名,不用生成組名,但FILLER組名中定義的每個(gè)數(shù)據(jù)項(xiàng)應(yīng)當(dāng)唯一。三.數(shù)據(jù)部用子句(一)PIC子句PIC是PICTURE的縮寫,PIC子句用來(lái)描述每一個(gè)基本數(shù)據(jù)項(xiàng),定義基本項(xiàng)目的具體長(zhǎng)度、格式和數(shù)據(jù)類型。01A.03A1PIC9999.03A2PICAAAA.03A3PICXXXX.(A)字母數(shù)據(jù)字母數(shù)據(jù)限于字母表中使用的字符和空格符,用A描述符表示,每個(gè)字符用一個(gè)A表示。01XPICA(4).MOVE‘ABC’TOX.(B)字符數(shù)據(jù)(字母數(shù)字)字符數(shù)據(jù)可以包含計(jì)算機(jī)字符集中的任何字符。字符數(shù)據(jù)項(xiàng)目的格式字符串可用用A、X、9表示,至少要包含一個(gè)X,是非數(shù)值類型的,不能用于運(yùn)算。01XPICX(4).01YPICX(8).01ZPICA(5)X9(2).MOVE’BOOK’TOXMOVE’1234’TOXMOVE’COBOL-85’TOYMOVE’COBOL-85’TOZ(C)字符編輯數(shù)據(jù)(字母數(shù)字)要把字符數(shù)據(jù)格式化成特定形式,則可以用字符編輯數(shù)據(jù)。字符編輯數(shù)據(jù)用特定字符表示格式。字符編輯數(shù)據(jù)項(xiàng)目的格式字符串可用A、X、9、B、0和/表示,至少要有一個(gè)A或X和一個(gè)B(空格)或0(0)或/(斜杠)。01EDITED-DATEPICTUREIS99/XXX/9999.MOVE’05May1909’TOEDITED-DATE則EDITED-DATE的值為‘05/May/1909’(D)數(shù)字?jǐn)?shù)據(jù)數(shù)字?jǐn)?shù)據(jù)由數(shù)字組成,包括其隱含的小數(shù)點(diǎn)和操作符號(hào),表示的是實(shí)際數(shù)字值,可用于數(shù)據(jù)運(yùn)算。數(shù)字?jǐn)?shù)據(jù)只能包含字符9,V,S和P的組合,至少要有一個(gè)9,最多18個(gè)9,至少一個(gè)V和S。1.“9”描述符表示數(shù)字存放位置,不能放入空格,不能表示小數(shù)和負(fù)數(shù)。算進(jìn)項(xiàng)目長(zhǎng)度中。描述數(shù)值內(nèi)存中表示長(zhǎng)度數(shù)值范圍01XPIC99912312330~99901YPIC9(4)4567456740~999901ZPIC9912.3412201TPIC99-12.341222.“V”描述符指出在數(shù)據(jù)中隱含的小數(shù)點(diǎn)的位置,不占內(nèi)存,不算進(jìn)項(xiàng)目長(zhǎng)度中。運(yùn)算時(shí)按隱含的小數(shù)點(diǎn)位置對(duì)準(zhǔn)進(jìn)行運(yùn)算。顯示時(shí)只顯示內(nèi)存中的內(nèi)容,不顯示小數(shù)點(diǎn)。不包含V的項(xiàng)目假設(shè)的小數(shù)點(diǎn)位于最右邊。描述數(shù)值內(nèi)存中表示長(zhǎng)度數(shù)值范圍01XPIC99V99.87.5875040.00~99.9901YPIC9(3)V9(2).7817810050.000~999.9901ZPICV9991.234234301TPIC999V12312333.“P”描述符表示數(shù)據(jù)項(xiàng)的比例因子,不占內(nèi)存,不算進(jìn)項(xiàng)目長(zhǎng)度中。當(dāng)數(shù)值很大,前面或后面若干位為0,為了節(jié)省內(nèi)存可以用“P”描述符。P只能出現(xiàn)在開頭或末尾,而不能同時(shí)在兩處出現(xiàn)。顯示時(shí)只顯示內(nèi)存中實(shí)際存放的數(shù)字而不顯示隱含的P(即0)。描述數(shù)值內(nèi)存中表示長(zhǎng)度數(shù)值范圍01XPIC9P(4).10000111~9*1000001YPICPPP99.0.000232320.00001~0.000994.“S”描述符表示一個(gè)帶符號(hào)的數(shù),符號(hào)不算如項(xiàng)目長(zhǎng)度中,除非包括SIGNISSEPARATE從句。如有S則必須是最左邊一個(gè)描述符。如無(wú)S則總是表示為正值。描述數(shù)值內(nèi)存中表示長(zhǎng)度數(shù)值范圍01XPICS9(3)V9(2)126.89126895-999.99~999.9901YPICS9(3)V9(2)-1126.897126895(E)數(shù)字編輯數(shù)據(jù)為了使輸出數(shù)據(jù)更易讀,可以定義數(shù)字編輯數(shù)據(jù)。數(shù)字編輯數(shù)據(jù)可以用于顯示數(shù)字,但所有計(jì)算中只能用數(shù)字?jǐn)?shù)據(jù)。數(shù)字編輯數(shù)據(jù)項(xiàng)目的格式字符串只能包含字符9、Z、B、0、/、P、V、,、。、*、+、-、CR、DB的組合。它必須包含1~18個(gè)9字符,包含至少一個(gè)除9、P、V以外的字符。1.“.”描述符表示插入小數(shù)點(diǎn)的位置,只能在格式字符串中使用一次,不能與V和P同時(shí)使用。01WPIC9(3).9(2).01VPIC9(3)V9(2).MOVE123.45TOVMOVEVTOW錯(cuò)誤:01WPICS9(3).9(2).2.“,”描述符表示插入逗號(hào)的位置,盡管它通常作千位分隔符,但也可以插入格式字符串其他地方。01WPIC999,999.99.MOVE123456.78TOW輸出表示:123,456.783.“0”描述符表示插入’0’。4.“B”描述符表示插入空格。01WPIC9(3).01VPICB9(3)B.MOVE123TOW.MOVEWTOV.5.“+”或“-”描述符表示在輸出的數(shù)值前(或后)加正號(hào)或負(fù)號(hào)。當(dāng)用“+”時(shí),不論數(shù)值為正或負(fù)一律加符號(hào)。當(dāng)用“-”時(shí),當(dāng)數(shù)值為正時(shí),數(shù)值前空一格,數(shù)值為負(fù)時(shí),加一負(fù)號(hào)。01XPICS99.01YPIC+99.01ZPIC-99.01UPIC99+.01VPIC99-.6.插入“$”01APIC$999.99.01BPIC+$999.99.01CPIC-$999.99.7.浮點(diǎn)插入形式(浮動(dòng)插入正負(fù)號(hào)和“$”)“$”,“+”,“-”的位置是浮動(dòng)的,能夠使符號(hào)緊挨著數(shù)字之前輸出。在編輯型數(shù)據(jù)的描述中,指定浮動(dòng)插入的字符個(gè)數(shù)應(yīng)足夠,以免數(shù)據(jù)被截?cái)?。浮?dòng)字符前不能再出現(xiàn)其它符號(hào),即浮動(dòng)字符應(yīng)為第一個(gè)描述字符。01A1PICS9(3)V99.01A2PIC++++.99.01A3PIC$$$$.99.01A4PIC++++.++.01A5PIC$$$$.$$.錯(cuò)誤:01A1PIC+$$.99.8.零抑制格式(取消高位零,用“Z”和“*”描述符)01A1PICS9(3)V99.01A2PICZZZZ.99.01A3PIC****.99.(1)不能同時(shí)用Z浮動(dòng)和+,-,$浮動(dòng)錯(cuò)誤:ZZ$$9.99或++ZZ.99(2)單個(gè)的+,-,$可以與Z或*連用01A1PIC+ZZZ.99.01A2PIC-*(3).99.01A3PIC$ZZZ.99.(3)如果使“Z”或“*”對(duì)應(yīng)與所有的數(shù)字字符,當(dāng)數(shù)值為0時(shí),則所用數(shù)字位全部由空格或*代替。小數(shù)點(diǎn)位置上,由空格代替(用Z時(shí)),或保留“.”(用*時(shí))。01A1PICZZZ.ZZ.01A2PIC***.**.(4)可與“,”連用01A1PICZ,ZZZ.99.9.插入“DB”和“CR”字符DB(DEBIT,借方)和CR(CREDIT,貸方)只能用作固定插入,而且只作最后一個(gè)描述符號(hào)。當(dāng)數(shù)值為負(fù)時(shí),在編輯型數(shù)據(jù)項(xiàng)中最后兩個(gè)字節(jié)中置DB或CR,數(shù)值為正時(shí),此兩字節(jié)留空格。01A1PIC$9(3).99DB.01A2PIC$999.99CR.10.PIC子句小結(jié)描述字符含義9表示一個(gè)數(shù)字位置A表示一個(gè)字母位置X表示一個(gè)字符位置V表示隱含的小數(shù)點(diǎn)位置S表示數(shù)值數(shù)據(jù)帶符號(hào)P表示十進(jìn)比例換算$插入貨幣號(hào).插入小數(shù)點(diǎn)位置,插入逗號(hào)位置+一律加符號(hào)-對(duì)負(fù)數(shù)加負(fù)號(hào),對(duì)正數(shù)前留一空格Z取消高位零,用空格代替*取消高位零,用*代替B插入空格0插入零DB(借方)數(shù)據(jù)為負(fù)時(shí),在數(shù)據(jù)后面插入DB,為正時(shí),空兩格CR(貸方)數(shù)據(jù)為負(fù)時(shí),在數(shù)據(jù)后面插入CR,為正時(shí),空兩格(二)REDEFINES子句REDEFINES子句可以用不同數(shù)據(jù)描述同一計(jì)算機(jī)內(nèi)存,適用于基本數(shù)據(jù)項(xiàng)和組數(shù)據(jù)項(xiàng)。層號(hào)數(shù)據(jù)名1REDEFINES數(shù)據(jù)名202A.03A1PIC9(4).03A2PICX(6).03A3PICX(4).02BREDEFINESA.03B1PICX(5).03B2PIC9(6).03B3PIC99V9.02CREDEFINESA.03C1PICX(5).03C2PICX(4).03C3PICX(5).規(guī)則:(1)數(shù)據(jù)名2與數(shù)據(jù)名1的層號(hào)必須相同。內(nèi)存中的值為數(shù)據(jù)名1和數(shù)據(jù)名2共享。(2)用REDEFINES子句的描述體應(yīng)緊跟在被重新定義的數(shù)據(jù)項(xiàng)的描述之后,中間不能插入其它項(xiàng)的說(shuō)明。當(dāng)進(jìn)行多次重定義,必須緊跟出現(xiàn),而且要求使用最初定義的數(shù)據(jù)名。(3)不能用于文件節(jié)或報(bào)表節(jié)的01層,可用于工作單元節(jié)的01層。(4)用REDEFINES子句可以改變數(shù)據(jù)的結(jié)構(gòu),REDEFINES從句定義的區(qū)域長(zhǎng)度應(yīng)小于等于原區(qū)域長(zhǎng)度。(5)REDEFINES子句應(yīng)在其它子句之前。(6)使用REDEFINES子句的數(shù)據(jù)項(xiàng)不能使用VALUE子句賦初值。(7)數(shù)據(jù)名2不能包含OCCURS子句。03APICX(8)VALUE’ABCDEFGH’.03BREDEFINESA.05B1PICX(4).05B2PICX(4).(三)USAGE子句USAGE子句可以指定計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)項(xiàng)格式,充分利用計(jì)算機(jī)內(nèi)存空間和算術(shù)功能。USAGE子句不影響項(xiàng)目的使用(但過(guò)程部的有些語(yǔ)句將某些操作數(shù)限于某種USAGE從句)。USAGE子句可以用于基本和組數(shù)據(jù)項(xiàng)目。[USAGEIS]BINARYDISPLAYCOMPUTATIONALCOMPCOMPUTATIONAL-1COMP-1COMPUTATIONAL-2COMP-2COMPUTATIONAL-3COMP-3COMPUTATIONAL-4COMP-4COMPUTATIONAL-5COMP-5INDEXPACKED-DECIMAL缺省為DISPLAY。BINARY、COMPUTATIONAL、PACKED-DECIMAL只用于數(shù)字?jǐn)?shù)據(jù)項(xiàng)。BINARY指定項(xiàng)目存放成二進(jìn)制數(shù)。在PIC子句中描述字符9的個(gè)數(shù)為1~4時(shí),占內(nèi)存字節(jié)為2;個(gè)數(shù)為5~9時(shí),占內(nèi)存字節(jié)為4;個(gè)數(shù)為10~18時(shí),占內(nèi)存字節(jié)為8。COMPUTATIONAL由廠家定義。大多選擇與BINARY相同。COMPUTATIONAL-1由廠家定義。大多定義為單精度內(nèi)部浮點(diǎn)數(shù)字項(xiàng),用內(nèi)存4Byte。(不用PIC)COMPUTATIONAL-2由廠家定義。大多定義為雙精度內(nèi)部浮點(diǎn)數(shù)字項(xiàng),用內(nèi)存8Byte。(不用PIC)PACKED-DECIMAL指定數(shù)字按縮和十進(jìn)制存放,以減少每個(gè)數(shù)字的存儲(chǔ)量。每個(gè)數(shù)字4位或每個(gè)字節(jié)表示2個(gè)數(shù)字。符號(hào)也占半個(gè)字節(jié),放在最后面(無(wú)符號(hào),用‘1111’;+號(hào),用‘1100’;-號(hào),用‘1101’)。COMPUTATIONAL-3由廠家定義。大多選擇與PACKED-DECIMAL一致。COMPUTATIONAL-4由廠家定義。大多選擇與PACKED-DECIMAL一致。COMPUTATIONAL-5由廠家定義。類似于USAGECOMP,但與在某些平臺(tái)上的字節(jié)順序相反。在支持小尾字節(jié)順序的平臺(tái)上,COMP-5執(zhí)行速度更快。(COMP-X類似于COMP-5,但按大尾字節(jié)順序存放。)INDEX用法是特殊用法,指定用該項(xiàng)目作為表格索引。采用INDEX用法的項(xiàng)目只能在過(guò)程部的某些語(yǔ)句中,不能有PIC從句。注:USAGE從句用于組層時(shí)作用于組中每個(gè)基本項(xiàng)目。如用BINARY時(shí),組中的所有基本項(xiàng)目都要用數(shù)字。03APIC9(4)COMP.03BPIC9(4).03CCOMP.05C1PICS9(3).05C2PICS9(6).(四)SIGN子句SIGN子句可以指定格式字符串包含S字符的數(shù)字?jǐn)?shù)據(jù)項(xiàng)中符號(hào)的位置。[SIGNIS]LEADING[SEPARATECHARACTER]TRAILING通過(guò)LEADING或TRAILING來(lái)指定符號(hào)在數(shù)字的第一位(LEADING)或最后一位(TRAILING)。符號(hào)的具體表示由廠家指定。如果有SEPARATE子句,則符號(hào)用標(biāo)準(zhǔn)字符+或-表示,符號(hào)位記入數(shù)據(jù)項(xiàng)的長(zhǎng)度。(五)OCCURS子句OCCURS子句指定數(shù)據(jù)項(xiàng)為固定項(xiàng)目數(shù)或可變項(xiàng)目數(shù)的表格(即數(shù)組)。OCCURS子句不能用于01和77層,可以用于基本或組數(shù)據(jù)項(xiàng)目。詳細(xì)內(nèi)容見表格處理。(六)SYNCHRONIZED子句SYNCHRONIZED子句指定基本數(shù)據(jù)項(xiàng)在計(jì)算機(jī)內(nèi)存自然邊界上的對(duì)齊。指定SYNCHRONIZED子句時(shí)的具體效果由廠家指定??蓞⒖唇炭茣?5章。(七)JUSTIFIED子句JUSTIFIED子句(簡(jiǎn)稱JUST)只能用于非編輯的字母數(shù)字基本數(shù)據(jù)項(xiàng)。即數(shù)據(jù)放進(jìn)這個(gè)項(xiàng)目時(shí),它與最右邊的字符對(duì)齊。數(shù)據(jù)太長(zhǎng)時(shí)左邊截尾,太短時(shí)則左邊填充。標(biāo)準(zhǔn)規(guī)則為與最左邊的字符對(duì)齊并在右邊截尾或填充。(八)BLANKWHENZERO子句BLANKWHENZERO子句只能用于數(shù)字型或數(shù)字編輯型的基本項(xiàng)。使用時(shí),當(dāng)數(shù)據(jù)項(xiàng)的值為零時(shí),內(nèi)容改變?yōu)榭崭瘛?3APIC$(5).99BLANKWHENZERO.03BPICZ,ZZ9.99BLANKWHENZERO.03CPIC***.**BLANKWHENZERO.(BLANK子句不起作用)(九)賦初值子句(VALUE子句)程序中的數(shù)據(jù)往往需要賦初值,可以用VALUE子句來(lái)實(shí)現(xiàn)。01A1PIC99VALUE12.01A2PICX(5)VALUE’COBOL’.01A3PICS99V99VALUE-12.34.01T.03A4PIC9(6)VALUEZERO.03A5PICX(6)VALUESPACES.03A6PICX(6)VALUEALL’A’.A7VALUE’1234’.組項(xiàng)目被初始化了,則下屬項(xiàng)目不能有05A71PIC99.VALUE子句。05A72PIC99.四.66層RENAMES項(xiàng)目用66層RENAMES項(xiàng)目可以在不改變數(shù)據(jù)項(xiàng)的長(zhǎng)度的前提下,重新定義數(shù)據(jù)區(qū)的名稱和數(shù)據(jù)結(jié)構(gòu)的形式。原各基本項(xiàng)的類型和長(zhǎng)度不變。即是說(shuō)該格式可以更名現(xiàn)有數(shù)據(jù)項(xiàng)或數(shù)據(jù)項(xiàng)組,或以原定以未允許的方式組合。66數(shù)據(jù)名1RENAMES數(shù)據(jù)名2[THRU數(shù)據(jù)名3]01A.03B05G05H03C05I05J03D03E03F66KRENAMESGTHRUI.66MRENAMESBTHRUC.66NRENAMESE.(1)層號(hào)只能用66,它必須緊跟在01層記錄中最后一個(gè)數(shù)據(jù)描述體之后。(2)只能用于工作單元節(jié)中,不能用于文件節(jié)中。(3)指定數(shù)據(jù)名3時(shí),數(shù)據(jù)名3必須在數(shù)據(jù)名2后面定義,不能從屬于數(shù)據(jù)名2。此時(shí)數(shù)據(jù)名1是一組項(xiàng)目。過(guò)程部一.簡(jiǎn)介過(guò)程部是COBOL程序的最后一個(gè)部分。包含程序運(yùn)行時(shí)要執(zhí)行的所有語(yǔ)句。以PROCEDUREDIVISION開頭,包含對(duì)數(shù)據(jù)操作的程序邏輯。過(guò)程部的組件包括語(yǔ)句、句子、段和節(jié)。語(yǔ)句(statement):以動(dòng)詞開頭的單詞、直接數(shù)和分隔符的組合。語(yǔ)句應(yīng)一律從B區(qū)(12列開始)開始寫,續(xù)行也應(yīng)從B區(qū)開始。句子(sentence):以英文句號(hào)(.)結(jié)尾的一系列語(yǔ)句。段(paragraph):由段名、句號(hào)分隔符和零或幾條句子組成。段的最后一條語(yǔ)句要用英文句號(hào)結(jié)束。節(jié)(section):由節(jié)標(biāo)題加上保留字SECTION和分隔符句號(hào)。注:段名應(yīng)在節(jié)中保持唯一性、節(jié)名應(yīng)在程序中保持唯一性。段名不能與節(jié)名重復(fù)。引用段名時(shí)可以用所屬的節(jié)限定如下:GOTOPARA-1INSECTION-22.例1:PROCEDUREDIVISION.(過(guò)程部頭)ASECTION. (A節(jié))A1.MOVE1TOI.(A1段)MOVE2TOJ.A2.ADDITOJ.(A2段)BSECTION.(B節(jié))…例2:PROCEDUREDIVISION.DISPLAY’HOWDOYOUDO’STOPRUN.例3:MOVE100TOX.ADDYTOZ.IFX>100GOTOFINISH.二.算術(shù)運(yùn)算語(yǔ)句加法語(yǔ)句(ADD語(yǔ)句)ADDATOBA+B→BADD15TOC15+C→CADDA,BTOCA+B+C→CADD15,25TOC15+25+C→CADDA,BGIVINGCA+B→CADD15,25GIVINGC15+25→CADDA,BTOC,DA+B+C→C,A+B+D→D減法語(yǔ)句(SUBTRACT語(yǔ)句)SUBTRACTBFROMAA–B→ASUBTRACTB,CFROMAA–B–C→ASUBTRACTB,CFROMA,TA–B–C→A,T–B–C→TSUBTRACTB,CFROMAGIVINGXA–B–C→X3.乘法語(yǔ)句(MULTIPLY語(yǔ)句)MULTIPLYABYBA*B→BMULTIPLYABYBGIVINGCA*B→CMULTIPLYABYB,CA*B→B,A*C→C4.除法語(yǔ)句(DIVIDE語(yǔ)句)DIVIDEAINTOBB/A→BDIVIDEAINTOBGIVINGCB/A→CDIVIDEABYBGIVINGCA/B→CDIVIDEABYBGIVINGCREMAINDERDA/B→商C,余數(shù)DREMAINDER子句:取得余數(shù)。存放余數(shù)的數(shù)據(jù)項(xiàng)可以時(shí)數(shù)字或數(shù)字編輯數(shù)據(jù)項(xiàng)。余數(shù)計(jì)算取決于每個(gè)操作數(shù)的符號(hào)和小數(shù)點(diǎn)位置。例:77QPICS99V9.77RPICS99V9.DIVIDE3INTO7GIVINGQREMAINDERRQ=2.3R=0.15.計(jì)算語(yǔ)句(COMPUTE語(yǔ)句)COMPUTE語(yǔ)句可以進(jìn)行復(fù)雜的四則運(yùn)算,也可實(shí)現(xiàn)指數(shù)運(yùn)算。COMPUTET=(A+B)*C/DCOMPUTET=X**2COMPUTET=1/(1/A+1/B)運(yùn)算次序:()->單邊運(yùn)算符+、―->**->*、/->+、-例1:IDENTIFICATIONDIVISION.PROGRAM-IDEX1.ENVIRONMENTDIVISION.DATADIVISION.WORKING-STORAGESECTION.77XPIC9999.77APIC9977BPIC99.77CPIC99.PROCEDUREDIVISION.ACCEPTA.ACCEPTB.ACCEPTC.COMPUTEX=(A+B)/C.DISPLAYX.STOPRUN.6.四舍五入處理(ROUNDER子句)接收項(xiàng)目后邊的ROUNDER短語(yǔ)表示運(yùn)算產(chǎn)生的數(shù)值先進(jìn)行四舍五入處理再存入接收項(xiàng)目中。對(duì)多個(gè)接收項(xiàng)目,舍入處理對(duì)各個(gè)項(xiàng)目獨(dú)立進(jìn)行。ADDA,BTOCROUNDERADDA,B,CTOD,EROUNDER,FROUNDER7.長(zhǎng)度溢出處理(ONSIZEERROR短語(yǔ))結(jié)果絕對(duì)值大于接收項(xiàng)目最大存儲(chǔ)能力時(shí),會(huì)發(fā)生SIZEERROR條件。APIC9V9VALUE1.2.BPIC9V9VALUE9.0.01CPIC9V9.MULTIPLYABYBGIVINGCONSIZEERRORDISPLAY’SIZEERROR’.8.帶CORRESPONDING子句的算術(shù)運(yùn)算語(yǔ)句(數(shù)據(jù)項(xiàng)同名時(shí)編寫多條語(yǔ)句的縮寫方法。)算術(shù)運(yùn)算語(yǔ)句中的ADD和SUBTRACT語(yǔ)句除了可以用來(lái)使兩個(gè)或多個(gè)單個(gè)的數(shù)據(jù)項(xiàng)進(jìn)行運(yùn)算外,還可以用來(lái)使兩個(gè)組合項(xiàng)中的對(duì)應(yīng)項(xiàng)進(jìn)行加,減運(yùn)算。進(jìn)行運(yùn)算的各項(xiàng)必須是數(shù)值型初等項(xiàng)。(數(shù)據(jù)項(xiàng)目不一定要格式相同。數(shù)據(jù)項(xiàng)的順序也無(wú)關(guān)緊要。)02A.02B.03A1PIC9(3).03A1PIC99V99.03A2PIC99V99.03A2PIC9V9.03A3PIC9V9.03A3PIC99V99.ADDCORRATOB.三.傳送語(yǔ)句(MOVE語(yǔ)句)MOVE語(yǔ)句用來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳送,將一個(gè)數(shù)據(jù)從一個(gè)內(nèi)存域送到另一個(gè)內(nèi)存域。MOVE123TOAMOVEZEROTOBMOVESPACETOCMOVE’COBOL’TOX,Y,Z1.同類型數(shù)據(jù)間的傳送規(guī)則。MOVEATOB其中A為發(fā)送項(xiàng),B為接收項(xiàng)數(shù)字型數(shù)據(jù)之間的傳送,按小數(shù)點(diǎn)位置對(duì)齊,如發(fā)送項(xiàng)長(zhǎng)于接收項(xiàng),則多余位截去,如短于接收項(xiàng),接收項(xiàng)的空位補(bǔ)零。字母或字符型數(shù)據(jù)間的傳送,按左端對(duì)齊,如發(fā)送項(xiàng)長(zhǎng)于接收項(xiàng),則右端多余位截去,如短于接收項(xiàng),右端補(bǔ)空格。2.編輯傳送。發(fā)送項(xiàng)是數(shù)字型數(shù)據(jù),而接收項(xiàng)是編輯數(shù)字型數(shù)據(jù),則先將發(fā)送項(xiàng)中數(shù)據(jù)按接收項(xiàng)的描述要求進(jìn)行編輯,然后再傳送。3.不同類型數(shù)據(jù)間的傳送規(guī)則(1)接收項(xiàng)為數(shù)字或數(shù)字編輯型,則發(fā)送項(xiàng)為數(shù)字和數(shù)字編輯型或字母數(shù)字型。常量ZERO可直接賦值。(2)接收項(xiàng)為字符數(shù)據(jù)或字符編輯數(shù)據(jù),則發(fā)送項(xiàng)目可以用任何類別。如果發(fā)送項(xiàng)是數(shù)字,則必須是無(wú)符號(hào)整數(shù)。4.組合項(xiàng)的傳送MOVE可以一次傳送一個(gè)基本項(xiàng),也可以傳送一組合項(xiàng)或一個(gè)記錄。組合項(xiàng)的傳送是將發(fā)送項(xiàng)的內(nèi)容不加轉(zhuǎn)換地一個(gè)字節(jié)一個(gè)字節(jié)地順序傳送到接收項(xiàng)。01A.01B.03A1PIC999.03B1PICX(6).03A2PICXX.03B2.03A3PIC999.05B21PICX(6).03A4PICA(5).05B22PICA(2).03A5PICX(3).03B3PICX(2).5.對(duì)應(yīng)傳送(CORRESPONDING子句)對(duì)應(yīng)傳送即把一個(gè)組合項(xiàng)中若干項(xiàng)傳送給另一個(gè)組合項(xiàng)中同名的項(xiàng)。如果兩個(gè)組合項(xiàng)中包括的項(xiàng)不同,則只傳送同名的項(xiàng)。傳送的兩者間必須有成對(duì)的同名數(shù)據(jù)項(xiàng),而且這一對(duì)中必須至少有一個(gè)項(xiàng)是基本項(xiàng)。四.輸入輸出語(yǔ)句1.接收語(yǔ)句(ACCEPT語(yǔ)句)ACCEPT語(yǔ)句從輸入設(shè)備讀取數(shù)據(jù)。有兩種格式:一種是將輸入設(shè)備中的少量數(shù)據(jù)移到程序中,通常通過(guò)鍵盤或控制臺(tái);一種是使程序可以取得系統(tǒng)日期和時(shí)間。ACCEPT標(biāo)識(shí)符[FROM助憶名]**助憶名應(yīng)與環(huán)境部SPECIAL-NAMES段中的硬件名相關(guān)聯(lián)。省略時(shí)為鍵盤輸入。ACCEPT標(biāo)識(shí)符FROMDATE(6字符)DAY(6字符)DAY-OF-WEEK(1字符)TIME(8字符)2.顯示語(yǔ)句(DISPLAY語(yǔ)句)DISPLAY語(yǔ)句將數(shù)據(jù)寫入輸出設(shè)備。DISPLAY標(biāo)識(shí)符[UPON助憶名][WITHNOADVANCING]**助憶名應(yīng)與環(huán)境部SPECIAL-NAMES段中的硬件名相關(guān)聯(lián)。省略時(shí)為操作員控制臺(tái)。如果使用NOADVANCING短語(yǔ)則傳輸最后一個(gè)字符后,輸出設(shè)備仍然保持原位,使下一條DISPLAY語(yǔ)句在該位置開始輸出數(shù)據(jù)。否則顯示這個(gè)數(shù)據(jù)后輸出設(shè)備復(fù)位到下一行。五.轉(zhuǎn)移語(yǔ)句(GOTO語(yǔ)句)GOTO語(yǔ)句是一個(gè)無(wú)條件轉(zhuǎn)移語(yǔ)句,程序執(zhí)行到此語(yǔ)句,無(wú)條件轉(zhuǎn)到指定的節(jié)或段去。A1.ADDATOCONSIZEERRORGOTOA2.A2.STOPRUN.六.字符串連接語(yǔ)句(STRING語(yǔ)句)STRING語(yǔ)句從一個(gè)或幾個(gè)發(fā)送數(shù)據(jù)項(xiàng)收集字符并將數(shù)據(jù)合成一個(gè)接收數(shù)據(jù)項(xiàng)。STRINGA,B,CTOD1.DELIMITED(定界短語(yǔ)),用來(lái)控制各個(gè)發(fā)送項(xiàng)的終止位置。STRINGA,B,CDELIMITEDBYSIZEINTODSTRINGA,B,CDELIMITEDBYSPACEINTOD2.POINTER(指針短語(yǔ)),用來(lái)指定開始復(fù)制的具體字符位置。MOVE3TOTSTRINGA,B,CDELIMITEDBYSIZEINTODPOINTERT.3.OVERFLOW(溢出短語(yǔ))STRINGA,B,CDELIMITEDBYSIZEINTODONOVERFLOWDISPLAY‘OVERFLOW’NOTONOVERFLOWDISPLAY‘NOTOVERFLOW’END-STRING.注:發(fā)送項(xiàng)必須為USAGEDISPLAY數(shù)據(jù)項(xiàng);接收項(xiàng)也應(yīng)為USAGEDISPLAY數(shù)據(jù)項(xiàng),不能是編輯數(shù)據(jù)項(xiàng)或包括JUSTIFIED從句的數(shù)據(jù)項(xiàng)。若取得的發(fā)送項(xiàng)的長(zhǎng)度小于接收項(xiàng),則接收項(xiàng)中沒(méi)有復(fù)制的字符位置保持不變。七.字符串分解語(yǔ)句(UNSTRING語(yǔ)句)UNSTRING語(yǔ)句取一個(gè)發(fā)送數(shù)據(jù)項(xiàng)中的字符并將其放進(jìn)多個(gè)接收數(shù)據(jù)項(xiàng)。UNSTRINGAINTOB,C,D1.DELIMITED短語(yǔ)UNSTRINGADELIMITEDBYSIZEINTOB,CUNSTRINGADELIMITEDBY’T’INTOB,CUNSTRINGADELIMITEDBYALL’’INTOB,CUNSTRINGADELIMITEDBYALLSPACEOR’.’INTOB,C2.COUNT短語(yǔ),將已發(fā)送的字符個(gè)數(shù)記入用戶定義的記數(shù)器。UNSTRINGADELIMITEDBY’T’INTOBCOUNTINW.3.DELIMITER短語(yǔ),定界符存儲(chǔ)短語(yǔ)。UNSTRINGADELIMITEDBY’T’ORALL’’OR’R’INTOBDELIMITERINQCDELIMITERINPDEND-UNSTRING.4.POINTER短語(yǔ),指定從發(fā)送項(xiàng)某一指定位置開始傳送。MOVE5TOTUNSTRINGAINTOBWITHPOINTERT.5.TALLYING短語(yǔ),接收項(xiàng)記數(shù)短語(yǔ),用來(lái)記錄實(shí)際接收傳送的接收項(xiàng)項(xiàng)數(shù)。UNSTRINGAINTOB,C,DTALLYINGINN.(N=3)6.OVERFLOW短語(yǔ)注:如果發(fā)送項(xiàng)的長(zhǎng)度大于接收項(xiàng)的總長(zhǎng)度,則填完最后一個(gè)接收項(xiàng)時(shí),語(yǔ)句結(jié)束并發(fā)生溢出。如果發(fā)送項(xiàng)的長(zhǎng)度小于接收項(xiàng)的總長(zhǎng)度或遇到分隔字符串使UNSTRING語(yǔ)句結(jié)束,則接收項(xiàng)中沒(méi)有復(fù)制到的字符位置保持不變。八.檢測(cè)語(yǔ)句(INSPECT語(yǔ)句)INSPECT語(yǔ)句檢查數(shù)據(jù)項(xiàng)以計(jì)算該項(xiàng)目中某個(gè)字符串出現(xiàn)的次數(shù)或用另一個(gè)字符串替換該字符串。1.INSPECTTALLYING格式,用來(lái)統(tǒng)計(jì)滿足某種條件的字符的個(gè)數(shù)。(檢查方向由左向右。對(duì)TALLYING后的變量要由使用者負(fù)責(zé)初始化到適當(dāng)數(shù)值,不能自動(dòng)初始化到零。)MOVE’AT**F,***,T’TOAINSPECTATALLYINGNFORALL’*’AFTER’T’(N=5)ALL檢查匹配的字符或字符串個(gè)數(shù)。INSPECTATALLYINGNFORLEADING’*’AFTER’T’(N=2)INSPECTATALLYINGNFORLEADING’*’(N=0)--LEADING只計(jì)算開頭的匹配,其他都不算匹配。INSPECTATALLYINGNFORCHARACTERSAFTER’T’(N=9)CHARACTERS計(jì)算所有字符,任何字符都算匹配。INSPECTATALLYINGNFORALL’*’,ALL’,’AFTER’T’(N=7)--AFTER設(shè)置開始比較的點(diǎn),若沒(méi)發(fā)現(xiàn)指定的開始字符,則不進(jìn)行比較。INSPECTATALLYINGNFORALL’*’BEFORE’,’(N=2)BEFORE指定停止比較中斷,若沒(méi)發(fā)現(xiàn)指定的字符,則效果如同沒(méi)有指定BEFORE.注意:如果在同一條INSPECTTALLYING語(yǔ)句中組合CHARACTERS、ALL、LEADING,則檢查一個(gè)字符進(jìn)行,連續(xù)采用每個(gè)檢查標(biāo)準(zhǔn),檢查順序按INSPECT語(yǔ)句中指定的順序。找到匹配后,當(dāng)前位置移動(dòng),比較在次從第一個(gè)操作數(shù)開始。即是說(shuō),第一個(gè)比較成功后,指針移動(dòng)到下一個(gè)字符,再?gòu)牡谝粋€(gè)比較做起。例:77CSPICX(9)VALUE‘REELWHEEL’.77COUNT-0PIC9(1).77COUNT-1PIC9(1).77COUNT-2PIC9(1).MOVE0TOCOUNT-0,COUNT-1,COUNT-2.INSPECTCSTALLYINGCOUNT-0FORALL‘E’,COUNT-1FORLEADING‘W’AFTER‘L’COUNT-2FORCHARACTERS.(COUNT-0=4,COUNT-1=1,COUNT-2=4)2.INSPECTREPLACING格式,用指定的字符代替另一些指定的字符。MOVE’A000.12B’TOAINSPECTAREPLACINGALL’0’BYSPACEALL’.’BY’,’ALL’A’BY’B’INSPECTAREPLACINGFIRST’0’BYSPACEBEFORE’.’--FIRST短語(yǔ)時(shí),只把第一個(gè)出現(xiàn)的字符當(dāng)作匹配。組合INSPECTTALLYING和REPLACING格式(等于INSPECT語(yǔ)句順序編寫,先用TALLYING選,再用REPLACING選項(xiàng)。)INSPECTATALLYINGNFORALL’L’REPLACINGLEADING’A’BY’E’AFTER’L’INSPECTCONVERTING格式,是INSPECTREPLACING語(yǔ)句縮寫。(等同于用一系列ALL選項(xiàng)。對(duì)象與目標(biāo)應(yīng)當(dāng)長(zhǎng)度相同,且對(duì)象中字符不能重復(fù)。)INSPECTACONVERTING’EL’TO’AX’===〉INSPECTAREPLACINGALL‘E’BY‘A’,REPLACINGALL‘L’BY‘X’.九.條件語(yǔ)句(IF語(yǔ)句)IF條件THEN語(yǔ)句組1ELSE語(yǔ)句組2END-IF1.關(guān)系表達(dá)式條件關(guān)系運(yùn)算符:>,<,=,>=,<=,NOT>,NOT<,NOT=,NOT>=,NOT<=IFA>=ZERO…IFBNOTEQUALTO1…IF(0.03*C)<D…IFNAMENOT=’WANG’…IFSTU=SPACE…2.符號(hào)條件符號(hào)條件測(cè)試算術(shù)表達(dá)式的代數(shù)值大于,小于或等于0。數(shù)據(jù)名或IS[NOT]POSITIVE算術(shù)表達(dá)式NEGATIVEZEROIFAISPOSITIVE…IFBISNOTNEGATIVE…IF(A+B)ISZERO…3.類型條件類型條件測(cè)試數(shù)據(jù)項(xiàng)的類型是否完全由屬于某個(gè)類或集合的字符組成。標(biāo)識(shí)符IS[NOT]NUMERICALPHABETICALPHABETIC-LOWERALPHABETIC-UPPERClass-nameENVIRONMENTDIVISION.CONFIGURATIONSECTION.SPECIAL-NAMES.CLASSREAL-NUMBERIS’0123456789+-*/’.……PROCEDUREDIVISION.IFAISREAL-NUMBER…4.條件名條件一個(gè)基本項(xiàng)只能根據(jù)某些條件取預(yù)定的值,或只能在一個(gè)預(yù)定的范圍中取值,則這個(gè)變量稱條件變量。用來(lái)表示條件變量當(dāng)前值的名字叫條件名,用層號(hào)88,緊跟在條件變量之后說(shuō)明。77XPIC9(6).88X1VALUE0THRU99.88X2VALUE100THRU999.88X3VALUE1000THRU4999.88X4VLAUE5000THRU100000.……IFX1MOVE0.03TOR.IFX2MOVE0.04TOR.IFX3MOVE0.05TOR.IFX4MOVE0.06TOR.5.復(fù)合條件用邏輯操作符(AND,OR,NOT)和括號(hào)進(jìn)行組合,可以構(gòu)成復(fù)合條件。IFX>0ANDX<100…IFX=0ORX=1十.PERFORM語(yǔ)句PERFORM語(yǔ)句使控制傳遞另一過(guò)程,并在執(zhí)行后返回。它相當(dāng)于子程序調(diào)用,只是不傳遞參數(shù)。1.簡(jiǎn)單PERFORM格式PERFORM過(guò)程名1[THRU(THROUGH)過(guò)程名2]過(guò)程部中的節(jié)名,段名稱為過(guò)程名。例1:A.DISPLAY‘A’MOVE‘B’TOT.PERFORMB.STOPRUN.DISPLAYT.MOVE‘C’TOT.PERFORMC.C.DISPLAYT.例2:PERFORMATHRUCA.……B.……C.……例3:PROCEDUREDIVISION.PERFORMA00.PERFORMB00.PERFORMC00.STOPRUN.A00SECTION.A00-START.……A00-END.EXIT2.PERFORMTIMES格式PERFORMTIMES格式與簡(jiǎn)單PERFORM格式相似,只是指定的過(guò)程組不是執(zhí)行一次,而是執(zhí)行指定的次數(shù)。PERFORM過(guò)程名1[THRU過(guò)程名2]整數(shù)TIMES例1:A.MOVE5TON.MOVE1TOM.PERFORMA1NTIMES.DISPLAYM.STOPRUN.A1.MULTIPLYNBYMSUBTRACT1FROMN.上例中的PERFORM部分也可寫成:PERFORMNTIMESMULTIPLYNBYMSUBTRACT1FROMNEND-PERFORM.3.PERFORMUNTIL格式PERFORMUNTIL格式重復(fù)執(zhí)行指定的過(guò)程組,直到條件值變?yōu)檎?。PERFORM過(guò)程名1[THRU過(guò)程名2]UNTIL條件注意:在執(zhí)行PERFORM語(yǔ)句時(shí),先判斷指定的條件是否為真,若為假則執(zhí)行所指定的語(yǔ)句序列,如果一開始條件就為真,則一次也不執(zhí)行。MOVE0TOTMOVE1TONPERFORMUNTILN>30ADDNTOTADD1TONEND-PERFORM.4.PERFORMVARYING格式PERFORMVARYING格式相當(dāng)于C語(yǔ)言中的FOR語(yǔ)句。多個(gè)計(jì)數(shù)器(AFTER短語(yǔ))等于嵌套FOR語(yǔ)句。PERFORM過(guò)程名1[THRU過(guò)程名2]VARYING標(biāo)識(shí)符1FROM標(biāo)識(shí)符2BY標(biāo)識(shí)符3UNTIL條件1[AFTER標(biāo)識(shí)符4FROM標(biāo)識(shí)符5BY標(biāo)識(shí)符6UNTIL條件2]MOVE0TOTPERFORMVARYINGNFROM1BY1UNTILN>30ADDNTOTEND-PERFORMPERFORMVARYINGIFROM1BY1UNTILI>9AFTERJFROM1BY1UNTILJ>9DISPLAYP=I*JEND-PERFORM.5.出口語(yǔ)句(EXIT語(yǔ)句)EXIT語(yǔ)句提供了一組過(guò)程的公共出口,或者說(shuō)它指出了被調(diào)用過(guò)程的邏輯終點(diǎn)。十一.多分支選擇語(yǔ)句(EVALUATE語(yǔ)句)EVALUATE語(yǔ)句根據(jù)一列表達(dá)式的值,從一大組語(yǔ)句中選擇一組要執(zhí)行的語(yǔ)句,相當(dāng)于CASE語(yǔ)句。EVALUATENET-INCOMEWHEN0THRU12500MOVE0TOTAX-RATEWHEN12501THRU28000MOVE0.15TOTAX-RATEWHEN28001THRU50000MOVE0.28TOTAX-RATEWHENOTHERMOVE0.33TOTAX-RATEEND-EVALUATE十二.停止語(yǔ)句(STOP語(yǔ)句)STOPRUN格式停止程序,關(guān)閉任何打開的文件,這是COBOL程序正常終止的方式。表的建立和查找COBOL語(yǔ)言中的表(TABLE)相當(dāng)于其它高級(jí)語(yǔ)言中的數(shù)組(ARRAY)。一.表定義生成表時(shí),在數(shù)據(jù)部的數(shù)據(jù)描述項(xiàng)中使用OCCURS子句。1.定長(zhǎng)表OCCURSinteger-1TIMESOCCURS從句生成定長(zhǎng)數(shù)據(jù)項(xiàng)表格,數(shù)據(jù)項(xiàng)個(gè)數(shù)就是指定的個(gè)數(shù),引用表格的下標(biāo)取值為1到integer-1之間。PRODUCT-RECORD.03PRODUCTOCCURS20TIMES.05PRODUCTIONPIC9(6).05SALESPIC9(6).05HANDPIC9(6).**PRODUCT是表的名字。2.變長(zhǎng)表格OCCURS整數(shù)1TO整數(shù)2TIMESDEPENDINGON數(shù)據(jù)名1OCCURS從句生成變長(zhǎng)表格,數(shù)據(jù)項(xiàng)個(gè)數(shù)可變。integer-1指定最少個(gè)數(shù),可以為0,integer-2指定最大個(gè)數(shù)。data-name-2應(yīng)為整數(shù),確定每次引用表格時(shí)數(shù)據(jù)項(xiàng)的實(shí)際個(gè)數(shù),取值為integer-1和integer-2之間。01STUDENT-SCORE-RECORD.03NAMEPICX(10).03QTY-OF-COURSEPIC99.03SCOREPIC9(3)OCCURS1TO10TIMESDEPENDINGONQTY-OF-COURSE.3.多維表格發(fā)生多維表格時(shí),用從屬于帶OCCURS從句的數(shù)據(jù)項(xiàng)的另一個(gè)OCCURS從句定義數(shù)據(jù)項(xiàng)。允許最多7維。01PRODUCT-RECORD.03PRODUCTOCCURS20TIMES.05QUANTITYPIC9(6)OCCURS3TIMES.PRODUCT是一維表,QUANTITY是二維表。有關(guān)說(shuō)明(1)OCCURS后面只能為正整數(shù)。(2)OCCURS從句不能用于01層和77層。(表只能定義在記錄內(nèi)部。77層是孤立的數(shù)據(jù)項(xiàng),不和其他數(shù)據(jù)發(fā)生組合關(guān)系。)(3)如果用OCCURS來(lái)描述一個(gè)基本項(xiàng),則重復(fù)出現(xiàn)的是這個(gè)基本項(xiàng)。如果用OCCURS來(lái)描述一個(gè)組合項(xiàng),則重復(fù)出現(xiàn)的是這個(gè)組合項(xiàng)。(4)在COBOL中表元素可以允許為組合項(xiàng)。而且在建立一個(gè)多維表的同時(shí),也建立了一維表。(5)只有當(dāng)OCCURS所說(shuō)明的數(shù)據(jù)是基本項(xiàng)時(shí),才能在該數(shù)據(jù)項(xiàng)的描述中使用PIC從句。A.02BPICX(20)OCCURS5.錯(cuò)誤03CPICX(20).二.表元素的引用表必須先在數(shù)據(jù)部定義,才能在過(guò)程部引用。各個(gè)表元素是按一定規(guī)律在內(nèi)存中順序存放的(在內(nèi)存中按行排列,如A(1,1)、A(1,2)、A(2,1)、A(2,2)),因此,在引用時(shí)必須指出表名和這個(gè)元素在表中的位置。例PRODUCT(2)。如果是二維表,在括弧中要用兩個(gè)下標(biāo)分別表示此元素在每一維中的位置。例QUANTITY(3,2)。注:下標(biāo)只能是整常數(shù)或具有整型值的數(shù)據(jù)名。TABLE.02BOCCURS8.03C1PICX(8).03C2PICX(2).MOVESPACETOC1OFB(2).–表元素應(yīng)出現(xiàn)在限定詞OF或IN的后面。三.表格的初始化1.對(duì)整個(gè)表格賦初值。01TABLEVALUEISZERO.03APIC9(3)OCCURS20TIMES.01TABLE.03APIC9(3)OCCURS20TIMESVALUEISZERO.TABLE.03AOCCURS20TIMESVALUESPACES.05NAMEPICX(10).05MAILPICX(20).對(duì)帶OCCURS從句的數(shù)據(jù)項(xiàng)指定VALUE值。01TABLE.03AOCCURS1TO20DEPENDINGONCOUNTVALUESPACES.05NAMEPICX(10).05MAILPICX(20).對(duì)變長(zhǎng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論