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)相关推荐

  1. 【NLP】语法、文法、句法、词法概念的区别

    语法.文法.句法.词法概念的区别: 语法与文法表示同一概念,不同角度诠释而言. 句法,描述句子的结构,词之间的依赖关系. 词法,研究词自身的结构与性质.

  2. 现代化历险记:策略+将COBOL转换为Java的示例

    在Keyhole Software,我们在很大程度上是一家现代化公司. 我们拥有一些顾问,他们专门研究将旧的代码迁移到新的,翻新的残旧代码库,并为大多数已经被供应商锁定的企业设计更光明的未来. 作为这 ...

  3. cobol和java_现代化历险:策略+将COBOL转换为Java的示例

    cobol和java 在Keyhole Software,我们在很大程度上是一家现代化公司. 我们有一些顾问,专门研究将旧的代码迁移到新的,翻新的残旧代码库,并为大多数已经被供应商锁定的企业设计更光明 ...

  4. java与javaScript 语法的区别

    目录 前言 一.java和javaScript是什么?有何不同? 1.java简介 2.javaScript简介 二,语法区别 -1.语法基础 java语言基础 Js语法基础 -2.数据类型 java ...

  5. python与java区别-python(一):python与java语法的异同之处

    1.变量 java中定义变量,int a=0;而python中为 a=0;由此可见java要事先申明数据类型,python中无需事先申明数据类型,拿来就可以用,Python 的语法要比Java 更灵活 ...

  6. Java基础1语法准备

    77集程序底层执行 初识Java 1.1计算机语言发展史以及未来 计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言. ·第一代语言:机器语言(相当于人类的原始阶段) 机器语言 ...

  7. php和python和java-python与java区别

    Python和Java都是很火的编程语言,对于想学习编程的人员来说,常常被这个问题所困扰:我是该学Python还是Java呢?想要解决这个问题,还需结合自身实际情况和两种语言的特点进行分析. 以下是P ...

  8. java and dsl_Groovy语法糖以及DSL

    前言 Why 初次接触到Groovy是在实习中接触到一个 纯Groovy写的项目,当时看了下这不就是没有分号的Java么,而且也是有年纪的语言了,并不想投入时间学习.后来工作中越来越多的看到Groov ...

  9. python和java的区别-python与java区别

    Python和Java都是很火的编程语言,对于想学习编程的人员来说,常常被这个问题所困扰:我是该学Python还是Java呢?想要解决这个问题,还需结合自身实际情况和两种语言的特点进行分析. 以下是P ...

最新文章

  1. SpringMVC的环境搭建
  2. SQLite VC环境搭建
  3. 列表和range、元组
  4. php 登录安全认证,介绍几种常用的web安全认证方式
  5. 卡尔曼滤波器实例:进一步讨论自由落体运动
  6. 商业互吹?扎克伯格:后悔没早点学微信
  7. 2020的另一面:5G的斯普特尼克之年
  8. 【Java面试】第二章:P5级面试
  9. 联想拯救者 Legion Y7000P 安装 Ubuntu 18.04.2 LTS amd64 遇到的问题解决
  10. Windows10 最新版官方iso镜像(截至2021/02)win10 2009(20h2)
  11. 微信开发工具取消域名检查_如何检查域名可用性(简易域名搜索工具)
  12. java 天气api_基于JAVA的免费天气预报接口查询
  13. 关于微信小程序开发过程中的页面刷新的解决方案
  14. 阿里云ECS服务器被DDoS无解攻击,我改怎么办
  15. 学而优则仕:中国古代政治原生态(转自 百度 读书吧)
  16. 传统相声台词-太平歌词大实话
  17. 紫外线检测仪UVA、UVB、UVC、UVA2紫外线检测仪WKM-UV1
  18. k8s pod基础概念
  19. RatingBar的使用
  20. VBoxManage 命令详解 (有用)

热门文章

  1. asp.net core 系列 19 EFCore介绍
  2. OpenCV---ROI(region of interest)和泛洪填充
  3. 51单片机 | 基于I2C总线的秒表模拟应用
  4. git push提交时卡住
  5. 【Netty】EventLoop和线程模型
  6. Can't use Subversion command line client:svn
  7. [原创]CAN总线数据计算器V1.01
  8. opencv 在工业中的应用:blob分析
  9. 几个和结束相关的内容
  10. WinZip命令行详解