cobol和java区别,COBOL语法和文法(1)
REDEFINES
可以用不同的变量描述同一内存。
01 PART_RECODE USAGE DISPLAY
03 PART-TYPE PICTURE...
03 PART_TYPE_A.
05 PART_NUMBER PICTURE...
05 PART_COST PICTURE...
03 PART_TYPE_B REDEFINES PART_TYPE_A.
05 UPC_CODE PICTURE...
03 PART_TYPE_C REDEFINES PART_TYPE_A.
05 ISBN PICTURE...
根据PART_TYPE决定用PART_TYPE_A还是PART_TYPE_B还是PART_TYPE_C。
规则:
PART_TYPE_B和PART_TYPE_C长度不能大于PART_TYPE_A。
数据项不能有VALUE。
01层不能用REDEFINES.
PART_TYPE_B和PART_TYPE_C中不能有OCCURS.
PICTURE
定义基本项目的具体长度,格式,数据类型。可以简写成PIC.
格式字符串最多30个字符,可以包含下列字符:
A 字母A-Z,a-z,空格
B 插入空格
P 标量字符,代表字段中不显示的小数点位置
S 代数符号,实际显示取决于项目的USAGE
V 小数点位置
X 任何字符
Z 抑制前头的0并转换成空字符
0 插入0
9 数字0~9
/ 插入/
, 插入,(逗号不能作为字符串的最后一位,最后时逗号是分隔符)
。 插入。
* 抑制前头的0并转换成*
+ 正值插入+,负值插入-
- 正值插入空格,负值插入-
$ 插入美元号
CR 正值插入两个空格,负值插入CR
DB 正值插入两个空格,负值插入DB
例子:
03 VAR PIC AAAAA. STATE变量长度为5个字符,不能有数字,等价于03 STATE PIC A(5)。
输入ASDFG ,显示ASDFG
03 VAR PIC XXXXX. FILLER变量长度为5个任意字符。等价于03 FILLER PIC X(5)。
输入123AS , 显示123AS
03 VAR PIC 99/XXX/9999 长度11,输入05may2004,显示05/may/2004
03 VAR PIC 0ABXXX/9999 长度11,输入05may2004,显示05 may/2004
03 VAR PIC 9(3) 长度3,0~999之间。
03 VAR PIC 9(4)V99 长度6,0.00~9999.99之间。
03 VAR PIC S9(5)V99 长度7,-99999.99~99999.99之间。
03 VAR PIC 9(6)PPP 长度6,可以是1000,2000,...,999999000。输入1234,显示1000。
03 VAR PIC PPP999 长度3,0.000001~0.000999之间。输入123,显示0.000123。
03 VAR PIC ZZZ.99,输入100.50,显示100.50;输入-51.50,显示51.50;
输入0,显示.00.
03 VAR PIC $ZZZ.ZZ-,输入100.50,显示$100.50;输入-51.50,显示$51.50-;
输入0,显示
03 VAR PIC $***,***.99CR,输入1000,显示$**1000.00;输入-1000,显示$**1000.00CR;
输入0,显示$***,***.00;输入51.5,显示$***,*51.50
03 VAR PIC $$$,$$$.99,输入100.50,显示$100.50;输入-100.50,显示$100.50;
输入0.777,显示$.77;输入0,显示$.00
03 VAR PIC $.$$$,输入1.00,显示$.00;输入0.65,显示$.65;
输入0,显示$.00;
03 VAR PIC $--,输入17.7,显示$17;输入-17.7,显示$-17;
输入-5,显示$-5
03 VAR PIC $999.99+,输入100.50,显示$100.50+;输入-100.50,显示$100.50-;
03 VAR PIC 9(3)B9(3),输入55,显示000 055;输入1000.78,显示001 000;
USAGE 表示基本或组数据的类型。有BINARY,COMPUTATIONAL(COMP),DISPLAY,INDEX,PACKED-DECIMAL.
JUSTIFIED
03 VAR1 PIC X(5) JUSTIFIED RIGHT.
03 VAR2 PIC X(5).
输入XYZ,VAR1显示的是" XYZ",VAR2显示的是"XYZ "。
BLANK WHEN ZERO
03 VAR PIC $999,999.99 BLANK WHEN ZERO .
当字段值为0,这个项目设置为全部空格。
VALUE
定义的时候就赋值。
03 VAR PIC X(5) VALUE "ABCDE".
01 VAR VALUE ALL SPACES.
03 VAR1 PIC XXX.
03 VAR2 PIC XX.
算术语句
COBOL中操作符执行顺序为:取正(+)、取负(-)最高级,指数操作(**)其次,乘(*)、除(/)再其次,加(+)、减(-)最后。
ROUNDED 舍入操作。
77 A PIC 9V9 VALUE 9.1.
77 B PIC 9.
ADD 0.5 TO A GIVING B ON SIZE ERROR GO TO PROC1.
ADD 0.5 TO A GIVING B ROUNDED ON SIZE ERROR GO TO PROC2.
END-ADD.
ON SIZE ERROR 是当语句出现错误时执行的。本例中第一句话执行没有错误,所以ON SIZE ERROR
不执行PROC1.第二句话,当0.5加上9.1得到9.6,因为有ROUNDED,所以执行舍入操作,得到10。而B只有1位数字,所以发生错误,执行ON SIZE ERROR操作,跳转执行PROC2。
CORRESPONDING(CORR) 数据项同名时编写多条语句。ADD和SUBSTRACT有此选项。
01 A .
03 B.
05 B1 PIC 999V99.
05 B1 PIC 999V99.
05 B1 PIC 999V99.
03 C.
05 B1 PIC 999V99.
05 B1 PIC 999V99.
05 B1 PIC 999V99.
则语句ADD CORR B TO C.相当于执行了下面3条语句。
ADD B1 OF B TO B1 OF C.
ADD B2 OF B TO B2 OF C.
ADD B3 OF B TO B3 OF C.
组项目不一定要格式相同。一个组项目中的内容在另一个组项目中可以没有,数据项顺序也无关紧要。只是严格按照数据项名称对应。
ADD A,B GIVING C. END-ADD. 将A,B相加放入C。
SUBTRACT A,B FROM C。END-SUBTRACT. 从C中减去A,B.
MULTIPLY A BY B GIVING C. END-MULTIPLY. 将A,B相乘放入C。
DIVIDE A INTO B GIVING C. END-DIVIDE. 将B除于A的结果放入C.
DIVIDE A BY B GIVING C. END-DIVIDE. 将A除于B的结果放入C.
DIVIDE A BY B GIVING C REMAINDER D. 将A除于B的商放入C,余数放入D.
D=A-B*C.
77 C PIC S99V9.
77 D PIC S99V9.
DIVIDE 3 INTO 7 GIVING C REMAINDER D.
C的值为2.3,D为0.1。(D=7-3*2.3)
COMPUTE
除了取余操作要用DIVIDE外,其他操作都可以用此语句。本语句求值一个算术表达式,并将结果存放在一个或几个变量中。
COMPUTE A ROUNDED,B = X*Y/(N+M)+Z. 将X*Y/(N+M)+Z的结果存放在B中,然后舍入后放入A中。
MOVE
MOVE A TO B.
也可以用CORR选项。
MOVE CORR A TO B.
cobol和java区别,COBOL语法和文法(1)相关推荐
- 【NLP】语法、文法、句法、词法概念的区别
语法.文法.句法.词法概念的区别: 语法与文法表示同一概念,不同角度诠释而言. 句法,描述句子的结构,词之间的依赖关系. 词法,研究词自身的结构与性质.
- 现代化历险记:策略+将COBOL转换为Java的示例
在Keyhole Software,我们在很大程度上是一家现代化公司. 我们拥有一些顾问,他们专门研究将旧的代码迁移到新的,翻新的残旧代码库,并为大多数已经被供应商锁定的企业设计更光明的未来. 作为这 ...
- cobol和java_现代化历险:策略+将COBOL转换为Java的示例
cobol和java 在Keyhole Software,我们在很大程度上是一家现代化公司. 我们有一些顾问,专门研究将旧的代码迁移到新的,翻新的残旧代码库,并为大多数已经被供应商锁定的企业设计更光明 ...
- java与javaScript 语法的区别
目录 前言 一.java和javaScript是什么?有何不同? 1.java简介 2.javaScript简介 二,语法区别 -1.语法基础 java语言基础 Js语法基础 -2.数据类型 java ...
- python与java区别-python(一):python与java语法的异同之处
1.变量 java中定义变量,int a=0;而python中为 a=0;由此可见java要事先申明数据类型,python中无需事先申明数据类型,拿来就可以用,Python 的语法要比Java 更灵活 ...
- Java基础1语法准备
77集程序底层执行 初识Java 1.1计算机语言发展史以及未来 计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言. ·第一代语言:机器语言(相当于人类的原始阶段) 机器语言 ...
- php和python和java-python与java区别
Python和Java都是很火的编程语言,对于想学习编程的人员来说,常常被这个问题所困扰:我是该学Python还是Java呢?想要解决这个问题,还需结合自身实际情况和两种语言的特点进行分析. 以下是P ...
- java and dsl_Groovy语法糖以及DSL
前言 Why 初次接触到Groovy是在实习中接触到一个 纯Groovy写的项目,当时看了下这不就是没有分号的Java么,而且也是有年纪的语言了,并不想投入时间学习.后来工作中越来越多的看到Groov ...
- python和java的区别-python与java区别
Python和Java都是很火的编程语言,对于想学习编程的人员来说,常常被这个问题所困扰:我是该学Python还是Java呢?想要解决这个问题,还需结合自身实际情况和两种语言的特点进行分析. 以下是P ...
最新文章
- SpringMVC的环境搭建
- SQLite VC环境搭建
- 列表和range、元组
- php 登录安全认证,介绍几种常用的web安全认证方式
- 卡尔曼滤波器实例:进一步讨论自由落体运动
- 商业互吹?扎克伯格:后悔没早点学微信
- 2020的另一面:5G的斯普特尼克之年
- 【Java面试】第二章:P5级面试
- 联想拯救者 Legion Y7000P 安装 Ubuntu 18.04.2 LTS amd64 遇到的问题解决
- Windows10 最新版官方iso镜像(截至2021/02)win10 2009(20h2)
- 微信开发工具取消域名检查_如何检查域名可用性(简易域名搜索工具)
- java 天气api_基于JAVA的免费天气预报接口查询
- 关于微信小程序开发过程中的页面刷新的解决方案
- 阿里云ECS服务器被DDoS无解攻击,我改怎么办
- 学而优则仕:中国古代政治原生态(转自 百度 读书吧)
- 传统相声台词-太平歌词大实话
- 紫外线检测仪UVA、UVB、UVC、UVA2紫外线检测仪WKM-UV1
- k8s pod基础概念
- RatingBar的使用
- VBoxManage 命令详解 (有用)