版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
cobol的語(yǔ)法與文法REDEFINES
可以用不同的變量描述同一內(nèi)存。
01PART_RECODEUSAGEDISPLAY
03PART-TYPEPICTURE...
03PART_TYPE_A.
05PART_NUMBERPICTURE...
05PART_COSTPICTURE...
03PART_TYPE_BREDEFINESPART_TYPE_A.
05UPC_CODEPICTURE...
03PART_TYPE_CREDEFINESPART_TYPE_A.
05ISBNPICTURE...
根據(jù)PART_TYPE決定用PART_TYPE_A還是PART_TYPE_B還是PART_TYPE_C。
規(guī)則:
PART_TYPE_B和PART_TYPE_C長(zhǎng)度不能大于PART_TYPE_A。
數(shù)據(jù)項(xiàng)不能有VALUE。
01層不能用REDEFINES.
PART_TYPE_B和PART_TYPE_C中不能有OCCURS.
PICTURE
定義基本項(xiàng)目的具體長(zhǎng)度,格式,數(shù)據(jù)類型??梢院?jiǎn)寫成PIC.
格式字符串最多30個(gè)字符,可以包含下列字符:
A
字母A-Z,a-z,空格
B
插入空格
P
標(biāo)量字符,代表字段中不顯示的小數(shù)點(diǎn)位置
S
代數(shù)符號(hào),實(shí)際顯示取決于項(xiàng)目的USAGE
V
小數(shù)點(diǎn)位置
X
任何字符
Z
抑制前頭的0并轉(zhuǎn)換成空字符
0
插入0
9
數(shù)字0~9
/
插入/
,
插入,(逗號(hào)不能作為字符串的最后一位,最后時(shí)逗號(hào)是分隔符)
。插入。
*
抑制前頭的0并轉(zhuǎn)換成*
+
正值插入+,負(fù)值插入-
-
正值插入空格,負(fù)值插入-
$
插入美元號(hào)
CR正值插入兩個(gè)空格,負(fù)值插入CR
DB正值插入兩個(gè)空格,負(fù)值插入DB例子:
03VARPICAAAAA.
STATE變量長(zhǎng)度為5個(gè)字符,不能有數(shù)字,等價(jià)于03STATEPICA(5)。
輸入ASDFG,顯示ASDFG
03VARPICXXXXX.
FILLER變量長(zhǎng)度為5個(gè)任意字符。等價(jià)于03FILLERPICX(5)。
輸入123AS,顯示123AS
03VARPIC99/XXX/9999長(zhǎng)度11,輸入05may2004,顯示05/may/2004
03VARPIC0ABXXX/9999長(zhǎng)度11,輸入05may2004,顯示05may/2004
03VARPIC9(3)長(zhǎng)度3,0~999之間。
03VARPIC9(4)V99長(zhǎng)度6,0.00~9999.99之間。
03VARPICS9(5)V99長(zhǎng)度7,-99999.99~99999.99之間。
03VARPIC9(6)PPP長(zhǎng)度6,可以是1000,2000,...,999999000。輸入1234,顯示1000。
03VARPICPPP999長(zhǎng)度3,0.000001~0.000999之間。輸入123,顯示0.000123。
03VARPICZZZ.99,輸入100.50,顯示100.50;輸入-51.50,顯示51.50;
輸入0,顯示.00.
03VARPIC$ZZZ.ZZ-,輸入100.50,顯示$100.50;輸入-51.50,顯示$51.50-;
輸入0,顯示
03VARPIC$***,***.99CR,輸入1000,顯示$**1000.00;輸入-1000,顯示$**1000.00CR;
輸入0,顯示$***,***.00;輸入51.5,顯示$***,*51.50
03VARPIC$$$,$$$.99,輸入100.50,顯示$100.50;輸入-100.50,顯示$100.50;
輸入0.777,顯示$.77;輸入0,顯示$.00
03VARPIC$.$$$,輸入1.00,顯示$.00;輸入0.65,顯示$.65;
輸入0,顯示$.00;
03VARPIC$--,輸入17.7,顯示$17;輸入-17.7,顯示$-17;
輸入-5,顯示$-5
03VARPIC$999.99+,輸入100.50,顯示$100.50+;輸入-100.50,顯示$100.50-;
03VARPIC9(3)B9(3),輸入55,顯示000055;輸入1000.78,顯示001000;USAGE表示基本或組數(shù)據(jù)的類型。有BINARY,COMPUTATIONAL(COMP),DISPLAY,INDEX,PACKED-DECIMAL.
JUSTIFIED
03VAR1PICX(5)JUSTIFIEDRIGHT.
03VAR2PICX(5).
輸入XYZ,VAR1顯示的是"
XYZ",VAR2顯示的是"XYZ
"。
BLANKWHENZERO
03VARPIC$999,999.99BLANKWHENZERO.
當(dāng)字段值為0,這個(gè)項(xiàng)目設(shè)置為全部空格。
VALUE
定義的時(shí)候就賦值。
03VARPICX(5)VALUE"ABCDE".
01VARVALUEALLSPACES.
03VAR1PICXXX.
03VAR2PICXX.
算術(shù)語(yǔ)句
COBOL中操作符執(zhí)行順序?yàn)椋喝≌?+)、取負(fù)(-)最高級(jí),指數(shù)操作(**)其次,乘(*)、除(/)再其次,加(+)、減(-)最后。ROUNDED
舍入操作。
77APIC9V9VALUE9.1.
77BPIC9.
ADD0.5TOAGIVINGBONSIZEERRORGOTOPROC1.
ADD0.5TOAGIVINGBROUNDEDONSIZEERRORGOTOPROC2.
END-ADD.ONSIZEERROR是當(dāng)語(yǔ)句出現(xiàn)錯(cuò)誤時(shí)執(zhí)行的。本例中第一句話執(zhí)行沒(méi)有錯(cuò)誤,所以O(shè)NSIZEERROR不執(zhí)行PROC1.第二句話,當(dāng)0.5加上9.1得到9.6,因?yàn)橛蠷OUNDED,所以執(zhí)行舍入操作,得到10。而B(niǎo)只有1位數(shù)字,所以發(fā)生錯(cuò)誤,執(zhí)行ONSIZEERROR操作,跳轉(zhuǎn)執(zhí)行PROC2。
CORRESPONDING(CORR)數(shù)據(jù)項(xiàng)同名時(shí)編寫多條語(yǔ)句。ADD和SUBSTRACT有此選項(xiàng)。
01A.
03B.
05B1PIC999V99.
05B1PIC999V99.
05B1PIC999V99.
03C.
05B1PIC999V99.
05B1PIC999V99.
05B1PIC999V99.則語(yǔ)句ADDCORRBTOC.相當(dāng)于執(zhí)行了下面3條語(yǔ)句。
ADDB1OFBTOB1OFC.
ADDB2OFBTOB2OFC.
ADDB3OFBTOB3OFC.組項(xiàng)目不一定要格式相同。一個(gè)組項(xiàng)目中的內(nèi)容在另一個(gè)組項(xiàng)目中可以沒(méi)有,數(shù)據(jù)項(xiàng)順序也無(wú)關(guān)緊要。只是嚴(yán)格按照數(shù)據(jù)項(xiàng)名稱對(duì)應(yīng)。
ADDA,BGIVINGC.END-ADD.
將A,B相加放入C。
SUBTRACTA,BFROMC。END-SUBTRACT.
從C中減去A,B.
MULTIPLYABYBGIVINGC.END-MULTIPLY.將A,B相乘放入C。
DIVIDEAINTOBGIVINGC.END-DIVIDE.
將B除于A的結(jié)果放入C.
DIVIDEABYBGIVINGC.END-DIVIDE.
將A除于B的結(jié)果放入C.
DIVIDEABYBGIVINGCREMAINDERD.
將A除于B的商放入C,余數(shù)放入D.
D=A-B*C.
77CPICS99V9.
77DPICS99V9.
DIVIDE3INTO7GIVINGCREMAINDERD.
C的值為2.3,D為0.1。(D=7-3*2.3)COMPUTE
除了取余操作要用DIVIDE外,其他操作都可以用此語(yǔ)句。本語(yǔ)句求值一個(gè)算術(shù)表達(dá)式,并將結(jié)果存放在一個(gè)或幾個(gè)變量中。COMPUTE
AROUNDED,B
=X*Y/(N+M)+Z.將X*Y/(N+M)+Z的結(jié)果存放在B中,然后舍入后放入A中。
MOVE
MOVEATOB.
也可以用CORR選項(xiàng)。
MOVECORRATOB.
ACCEPT
從鍵盤或其他輸入設(shè)備讀取數(shù)據(jù)。
ACCEPTAFROMDEV.
從DEV讀取數(shù)據(jù)到A,也可以省略FROMDEV,表示從鍵盤讀取。
ACCEPTAFROMDATE/DAY/DAY-OF-WEEK/TIME.讀取日期,表示為6個(gè)字符,如990909(1999年9月9日)。
讀取當(dāng)前日期在年度(前2位)中為第幾天(后3位),表示為6個(gè)字符,如1994年4月1日表示為94091。
讀取當(dāng)前星期幾,表示為1位字符。1表示星期一,7表示星期日。
讀取當(dāng)前時(shí)間,表示為8位字符。精確到毫秒。如下午2:41表示為14410000。
DISPLAY
將數(shù)據(jù)寫入輸出設(shè)備。如監(jiān)視器(monite),系統(tǒng)輸出流和操作員控制臺(tái)(console)。
DISPLAYAAAAABBBBB[UPONDEV][WITHNOADVANCING]
如果使用UPON選項(xiàng),dev要與special-names段中的硬件名相關(guān)聯(lián)。
如果使用noadvancing選項(xiàng),則輸出最后一個(gè)字符后輸出設(shè)備仍然保持原位,使下一條display語(yǔ)句還在該位置顯示。否則可能到下一行顯示。
INITIALIZE
初始化數(shù)據(jù),數(shù)字和數(shù)字編輯數(shù)據(jù)項(xiàng)初始化為0,其他初始化為空格。INSPECTTALLYING
計(jì)算項(xiàng)目中該字符串出現(xiàn)的次數(shù)。
INSPECTAATALLYINGBBFORALL“EE”.
從AA中查找有多少個(gè)EE,將個(gè)數(shù)寫入BB。
INSPECTAATALLYINGBBFORCHARACTERSBEFORE“E”.
從AA中查找E前面有多少個(gè)字符,將個(gè)數(shù)寫入BB。
INSPECTAATALLYINGBBFORCHARACTERSAFTER“C”BEFORE“E”.
從AA中查找C后面E前面有多少個(gè)字符,將個(gè)數(shù)寫入BB。
INSPECTAATALLYINGBBFORLEADING“E”.
從AA中第一個(gè)字符開(kāi)始查找有多少個(gè)E,如果沒(méi)有就結(jié)束操作,有就將個(gè)數(shù)寫入BB,直至沒(méi)有。
INSPECTAATALLYINGBBFORLEADING“E”AFTER“C”.
從AA中C后面開(kāi)始查找有多少個(gè)E,如果沒(méi)有就結(jié)束操作,有就將個(gè)數(shù)寫入BB,直至沒(méi)有。組合例子:
77CSPICX(9)VALUE"REELWHEEL".
77COUNT-0.
77COUNT-1.
77COUNT-2.
MOVE0TOCOUNT-0,COUNT-1,COUNT-2.
INSPECTCSTALLYING
COUNT-0FORALL"E",
COUNT-1FORLEADING"W"AFTER"L",
COUNT-2FORCHARACTERS.
程序首先判斷的是字符"R",執(zhí)行COUNT-0FORALL"E",因?yàn)榈谝粋€(gè)字符不是"E",所以程序轉(zhuǎn)而執(zhí)行COUNT-1FORLEADING"W"AFTER"L",也不符合要求,
于是程序執(zhí)行COUNT-2FORCHARACTERS,COUNT-2=1。然后字符串往下一位,判斷"E",執(zhí)行COUNT-0FORALL"E",符合要求,則COUNT-0=1。
有了滿足條件的判斷,則余下的判斷不再執(zhí)行,字符串再往下一位,判斷"E",則COUNT-0=2。接著判斷"L",則COUNT-2=2。以此類推,最后結(jié)果為COUNT-0=4,
COUNT-1=1,COUNT-2=4。INSPECTREPLACING
用另一個(gè)字符串替換這個(gè)字符串。
還用上面的例子。
INSPECTCSREPLACINGALL"E"BY"Y".
結(jié)果"RYYLWHYYL"
INSPECTCSREPLACINGCHARACTERSBY"Z"AFTER
"L".
結(jié)果"REELZZZZZ"
INSPECTCSREPLACINGLEADING"E"BY"Y".
結(jié)果不變
INSPECTCSREPLACINGLEADING"E"BY"Z"AFTER
"H".
結(jié)果"REELWHZZL"
INSPECTCSREPLACINGFIRST"E"BY"I".
結(jié)果"RIELWHEEL"
INSPECTCSREPLACINGFIRST"EE"BY"00",ALL"WH"BY"TH",CHARACTERSBYSPACE.
結(jié)果"00TH
"INSPECTCONVERTING
就是INSPECTREPLACING的縮寫。
INSPECTCSCONVERTING"EE"TO"00".也可以加上BEFORE,AFTER。STRING
將幾個(gè)字符串合并成一個(gè)字符串。
STRINGADELIMITEDBYSPACE,"!"DELIMITEDBYSIZEINTOC.假設(shè)A中的內(nèi)容是"HELLO",則結(jié)果是"HELLO!".
DELIMITEDBYSPACE意思是碰到空格,或到A的結(jié)尾或C的結(jié)尾,則合并A字符串結(jié)束。
DELIMITEDBYSIZE意思是到"!"的結(jié)尾或C的結(jié)尾,則合并"!"字符串結(jié)束。
STRINGAINTOBPOINTERCONOVERFLOWPROC1NOTONOVERFLOW
PROC2.
將A字符串復(fù)制到B中由C開(kāi)始的地址處。如果C小于1或大于B的長(zhǎng)度,或A的長(zhǎng)度大于B中C到結(jié)尾處的長(zhǎng)度,則發(fā)生
OVERFLOW溢出,執(zhí)行PROC1。
UNSTRING
將一個(gè)字符串中的字符按照要求放入多個(gè)變量中。
UNSTRINGAAA[DELIMITEDBY[ALL]B[OR[ALL]C]...]INTO{C[DELIMITERIND][COUNTINE]}...[WITHPOINTERF][TALLYINGING][ONOVERFLOWPROC1][NOTONOVERFLOWPROC2][END-UNSTRING]
將AAA中的字符放入C,如果還有其他變量,如C2,則等C放滿后放入C2。
DELIMITEDBY和STRING中的作用一樣。表示將AAA中到B為止的字符取出。如果有OR,則表示到B或C字符為止的字符取出。如果有ALL,則如果幾個(gè)相同的B在一起,則認(rèn)為是一個(gè)B。
DELIMITERIN將B放入D,知道是哪個(gè)字符為分隔符。
COUNTIN實(shí)際復(fù)制到C中的字符數(shù)放入E中。
WITHPOINTER和STRIGN中一樣。
TALLYINGIN計(jì)算有幾個(gè)接受項(xiàng)。訪問(wèn)一個(gè)新的接受項(xiàng),G值加1。例子:
03CITYPICX(10).
O3ZIP
PICX(10).
77TESTPICX(20).
MOVE"NEWYORK,
UNSTRINGTESTDELIMITEDBY","INTOCITY,ZIP.
執(zhí)行結(jié)果CITY值是NEWYORK.ZIP的值是NY10017。
邏輯和控制語(yǔ)句
IF(A[NOT]>B)等價(jià)于IF(A[NOT]GREATERTHANB)
IF(A[NOT]<B)等價(jià)于IF(A[NOT]LESSTHANB)
IF(A[NOT]=B)等價(jià)于IF(A[NOT]EQUALTOB)
IF(A>=B)等價(jià)于IF(AGREATERTHANOREQUALTOB)
IF(A<=B)等價(jià)于IF(ALESSTHANOREQUALTOB)
IFAIS[NOT]NUMERIC
數(shù)字和可選符號(hào)
IFAIS[NOT]ALPHABETICA~Z,a~z字符和空格
IFAIS[NOT]ALPHABETIC-LOWERa~z字符和空格
IFAIS[NOT]ALPHABETIC-UPPERA~Z字符和空格
IFAIS[NOT]CLASS-NAME
SPECIAL-NAMES定義的字符集
例如:SPECIAL-NAMES.
CLASSMYDEFINEIS"12345+ABCDE-".
判斷變量是否定義了數(shù)值。這個(gè)變量是88層的,且要與一個(gè)數(shù)據(jù)項(xiàng)關(guān)聯(lián)。
03STATEPICXX.
88CONVALUESARE"A","B","C".
IFCON...
判斷廠家定義運(yùn)行開(kāi)關(guān)的開(kāi)/關(guān)狀態(tài)。
SPECIAL-NAMES.
SWITCH-AONSTATUSISA-ON,OFFSTATUSISA-OFF.
IFA-ON...
若開(kāi)關(guān)在開(kāi)位置,則IFA-ON返回TRUE。
IFAIS[NOT]POSITIVE
判斷是否大于0
IFAIS[NOT]NEGATIVE
判斷是否小于0
IFAIS[NOT]ZERO
判斷是否等于0PERFORM
過(guò)程調(diào)用,但是不傳遞參數(shù)。
PERFORMPROC1[THROUGHPROC2]
執(zhí)行完P(guān)ROC1再執(zhí)行PROC2.沒(méi)有THROUGH(THRU)就只執(zhí)行PROC1.
PERFORMPROC1[THRUPROC2]NTIMES
執(zhí)行PROC1[或者還有PROC2]N次。
PERFORMPROC1[THRUPROC2][WITHTESTBEFORE/AFTER]UNTILANOTEUQAL0.
執(zhí)行PROC1[或者還有PROC2]直到A不等于0。WITHTESTBEFORE/AFTER指定在第一次執(zhí)行之前還是之后判斷條件。默認(rèn)是BEFORE,執(zhí)行之前判斷。
PERFORMPROC1[THRUPROC2][WITHTESTBEFORE/AFTER]VARYINGAFROMBBYCUNTILCONDITION1[AFTERDFROMEBYFUNTILCONDITION2].
相當(dāng)于FOR循環(huán),將A的值從B開(kāi)始,以C為單位遞增,直到滿足CONDITION1。AFTER語(yǔ)句是一個(gè)嵌套的FOR循環(huán)。VARYING是外循環(huán),AFTER是內(nèi)循環(huán)。A,B可以是索引。
過(guò)程也可以直接寫入PERFORM中。但是THROUGH就不好用了。語(yǔ)法如下:
PERFORM過(guò)程語(yǔ)句END-PERFORM.
PERFORMNTIMES過(guò)程語(yǔ)句END-PERFORM.
PERFORM[WITHTESTBEFORE/AFTER]UNTILCONDITION過(guò)程語(yǔ)句END-PERFORM.
PERFORM[WITHTESTBEFORE/AFTER]VARYINGAFROMBBYCUNTILCONDITION1過(guò)程語(yǔ)句END-PERFORM.
IF語(yǔ)句
IFCONDITIONTHENSTATEMENTS1/NEXTSENTENCEELSESTAT
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年跨界藝術(shù)品版權(quán)交易合同
- 2025年度智能家居瓷磚定制設(shè)計(jì)與銷售服務(wù)合同3篇
- 2024幼兒園租賃合同-附幼兒園師資培訓(xùn)及認(rèn)證服務(wù)3篇
- 2025年度打包機(jī)節(jié)能技術(shù)應(yīng)用研究與推廣合同2篇
- 2024年詩(shī)歌朗誦比賽場(chǎng)地租賃合同
- 2024年聯(lián)營(yíng)權(quán)責(zé)調(diào)整書(shū)
- 2025年度智慧社區(qū)建設(shè)合作協(xié)議書(shū)3篇
- 2024年遠(yuǎn)程醫(yī)療服務(wù)合同范本6篇
- 2024鮮花婚禮布置承包合同
- 2024年:版權(quán)與專利共享協(xié)議
- 大學(xué)生暑期社會(huì)實(shí)踐證明模板(20篇)
- 自來(lái)水維修員年度工作總結(jié)
- ASTMB117-2023年鹽霧試驗(yàn)標(biāo)準(zhǔn)中文
- 國(guó)際海上避碰規(guī)則(中英版)課件
- 小學(xué)思政課《愛(ài)國(guó)主義教育》
- 批量訂購(gòu)車輛合同范本
- 新能源發(fā)電技術(shù)學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 初中物理-初三物理模擬試卷講評(píng)課教學(xué)課件設(shè)計(jì)
- 道路危險(xiǎn)貨物運(yùn)輸企業(yè)安全生產(chǎn)清單
- 鋼鐵生產(chǎn)企業(yè)溫室氣體核算與報(bào)告案例
- 農(nóng)業(yè)合作社全套報(bào)表(已設(shè)公式)-資產(chǎn)負(fù)債表-盈余及盈余分配表-成員權(quán)益變動(dòng)表-現(xiàn)金流量表
評(píng)論
0/150
提交評(píng)論