COBOL语言总结(二)
一、数据类型COM
①COM-3:内部十进制数:十进制数两位用一个字节表示
1.数据在计算机中以压缩十进制数的形式存储。每个字节放两个数字,但是最右边的字节内只放一个数字加符号字段。PIC定义中只能包含9,P,S,V.
2.项目的位数(n)和项目所占字节数(m)之间的关系用“m=n/2+1”的公式表示。
3.符号作为独立的半字节位于最右端的4位,无符号数字为F,有符号数(S型)为正数的场合,最右端四位为C,负数的场合为D。
4.数字项目在记录中属于组合项的场合,COBOL中组合项都是按照字符存储的,会进行变化
01 WK3 PIC S9(11) COMP-3. //实际占6位 ,11/2 + 1 =6
01 WK1 PIC 9(1) COMP-3.
01 WK2 PIC 9(1)V9(1) COMP-3.
01 WK3 PIC S9(1) COMP-3.
01 WK4 PIC S9(1)V9(1) COMP-3.
01 WK5 PIC S9(8) COMP-3. 01 WK6. 03 WK7 PIC 9(7) COMP-3. 03 WK8 PIC S9(7) COMP-3. 03 WK9 PIC 9(7) COMP-3. MOVE -1 TO WK1.
MOVE 1.23 TO WK2.
MOVE -2 TO WK3.
MOVE -1.2 TO WK4.
MOVE -12345678 TO WK5.
MOVE -1234 TO WK7.
MOVE +1234567 TO WK8.
MOVE 3456789 TO WK9.
===========================内存值 16进制值
WK1 1 1F
WK2 1.2 021F
WK3 -2 2D
WK4 -1.2 021D
WK5 -12345678 024681357D
WK6 对照码表对应字符 002413573579013D246C468F
②COMP-5/BINARY (固有2進数)--同COMP-X
①COMP-5可存储的数值不限于PIC后定义的长度。
②COMP-5对于9和S9有区分,S9时,第一个bit是符号位,9型时没有符号位,所以可存储的数值的范围不一样。
③外部10进制,内部二进制表示。可表示的最大长度,取决与可表示的字节数。9型描述符的场合,根据有无符号,表示的字节数不同。X型描述符的场合,X的个数为对应的字节数。
赋值规则:
COMP型赋值:短赋长,先补位,转2进制存储
长赋短,先截位,转2进制存储
COMP型的负数:补位或截位后对对应正数的反码加1(正数为0,负数为1)
COMP-5型赋值:短赋长(正数),先转2进制存储,再补位
长赋短(正数),先转2进制存储,再截位
短赋长(负数),先将对应正数转2进制,再补位,再反码加1
长赋短(负数),先将对应正数转2进制,再反码加1,再截位
COMP-5对于9和S9的位数和存储的bytes的个数
COMP-5数字9型个数
有符号 无符号 bytes
1-2 1-2 1
3-4 3-4 2
5-6 5-7 3
7-9 8-9 4
10-11 10-12 5
12-14 13-14 6
15-16 15-16 7
17-18 17-19 8
19-21 20-21 9
22-23 22-24 10
24-26 25-26 11
27-28 27-28 12
29-31 29-31 13
32-33 32-33 14
34-35 34-36 15
36-38 37-38 16
COMPUTATIONAL-5:
①定义的场合:可使用的描述符:S,9,V,X
(“x”的数目表示该数据项的字节数。)
②COMPUTATIONAL-5的定义描述符中包含"X"的场合,必须为无符号数。
③COMPUTATIONAL-5的定义描述符中包含"X"的场合,必须为无符号整数数。
④COMPUTATIONAL-5可全部使用X进行定义
官网说明:COMP-5型,PIC描述符使用 X或9。不存在使用混合X和9。代码也无混合使用的。
①COMPUTATIONAL-5描述符为S,V,9的场合,9的个数最多为38个,S和V不占位。
②COMPUTATIONAL-5描述符为X的场合,X的个数最多为16个。
9型举例
01 WK1 PIC 9(7) COMP-5.
01 WK2 PIC 9(7) COMP-5.
01 WK3 PIC 9(7) COMP-5.
01 WK4 PIC 9(7) COMP-5. MOVE 16777215 TO WK1.
MOVE 16777216 TO WK2.
MOVE -98765432 TO WK3.
MOVE 98765432 TO WK4.内存值 16进制值
WK1 16777215 FFFFFF
WK2 00000000 000000
WK3 01897864 1F8C58
WK4 14879352 E073A8WK1和WK2说明:
9型无符号整数赋值正数的场合,9的个数决定Byte个数,Byte的个数决定变量的取值范围。
PIC 9(7)对应的字节数为3,最大值为2^(3*8)-1=16777215。大于2^(3*8)-1=16777215,产生截取。
16777215:二进制:111111111111111111111111(24位)
16777216:二进制:1000000000000000000000000(25位)WK3说明:
1.PIC 9(7)对应的字节数为3,最大值为2^(3*8)-1
最大值为16777215,共8位数字,共24位。
2.赋值为负数,并且绝对值大于最大值的场合。
负数使用对应正数的绝对值的反码+1表示。
先将-987654321的绝对正值转化为对应二进制,再转化位反码,反码再加1,
再转化为二进制,从右向左截取24位,进行储存。
十进制 16进制 2进制
01897864 1CF588 000111001111010110001000
98765432 E30A78 101111000110000101001111000(27位)
98765432补码 010000111001111010110000111
98765432补码 +1 010000111001111010110001000000111001111010110001000(24位:01897864)
3.9型无符号 WK4说明:
1.PIC 9(7)对应的字节数为3,最大值为2^(3*8)-1
最大值为16777215,共8位数字,共24位。
2.赋值为正数,并且大于最大值的场合,
先将值98765432转化为对应的2进制,然后再从右向左截取24bit位,进行储存。十进制 16进制 2进制
98765432 E30A78 111000110000101001111000(27位)111000110000101001111000(截取24位) =14879352(10进制)
3.9型无符号,所有的bit均表示数值
S9型举例
01 WK5 PIC S9(7) COMP-5.
01 WK6 PIC S9(7) COMP-5.
01 WK7 PIC S9(7) COMP-5.
01 WK8 PIC S9(7) COMP-5. MOVE 2147483647 TO WK5.
MOVE 2147483648 TO WK6.
MOVE 123456 TO WK7.
MOVE -123456 TO WK8.内存值 16进制值
WK5 +2147483647 7FFFFFFF
WK6 00000000 000000
WK7 +0000123456 00E4C120
WK8 -0000123456 FF1CFED0WK5和WK6的说明:
COMP-5型赋值场合,9的个数决定Byte个数,Byte的个数决定变量的取值范围,
最高一位为符号位,0表示正数,1表示负数。
PIC S9(7)对应的字节数为4,最大值为2^(4*8-1)-1=2147483647。
10进制 16进制 2进制
+2147483647 7FFFFFFF 01111111111111111111111111111111
-2147483648 8000000 10000000000000000000000000000000(最左端为1,为负数)WK7说明:
1.PIC S9(7)对应的字节数为4,最大值为2^(4*8-1)-1
最大值为2147483647,共10位数字,共31bit位(最左端一位表示符号位)。
2.赋值为正数,并且绝对值小于最大值的场合,为原值。
先将值123456转化为对应的2进制,然后再左侧补0至31bit位。
十进制 16进制 2进制
123456 1E240 11110001001000000(17位)00000000000000011110001001000000(32,左侧补0,最左侧为0,正数)
3.最左端一位为符号位,0表示正数,1表示负数。WK8说明:
1.最大值为2147483647,共10位数字,共31bit位(最左端一位表示符号位)。
2.赋值为负数,并且绝对值小于最大值的场合,
负数使用对应正数的绝对值的反码+1表示。
先将值-123456的绝对正值转化为对应的2进制(32位),再转化为反码,反码再加1。
十进制 16进制 2进制
-0000123456 FFFE1DC0 11111111111111100001110111000000
123456 1E240 11110001001000000(17位) 00000000000000011110001001000000(32,左侧补0)
反码 11111111111111100001110110111111
反码+1 FFFE1DC0 11111111111111100001110111000000(32位,最左侧为1,负数)
3.最左端一位为符号位,0表示正数,1表示负数。
X型举例
01 WK9 PIC X(1) COMP-5.
01 WK10 PIC X(1) COMP-5.
01 WK11 PIC X(1) COMP-5.
01 WK12 PIC X(1) COMP-5.
01 WK13 PIC X(1) COMP-5. MOVE 123 TO WK9.
MOVE -123 TO WK10.
MOVE 255 TO WK11.
MOVE 4321 TO WK12.
MOVE -4321 TO WK13.内存值 16进制值
WK9 123 7B
WK10 133 85
WK11 255 FF
WK12 225 E1
WK13 031 1FWK9说明:
1.PIC X(1) COM-5,无符号,X(1)对应的字节数为1,8bit位,最大值为2^(8)-1=255
2.赋值为正数,并且小于最大值的场合,为原值。
3.PIC X(1) COM-P:无符号数字,全部的Bit位均表示数值WK10说明:
1.PIC X(1) COM-5,无符号,X(1)对应的字节数为1,8bit位,最大值为2^(8)-1=255
2.赋值为负数。
负数为绝对值的反码加1表示,无符号位。
10进制 16进制 2进制
123 7B 01111011
123反码 10000100
123反码 +1 10000101 = 133
3.如果在COMP-5数据项目用的PICTURE句中指定“x”,则该数据项目被视为无符号,不被赋予符号。WK11说明:
PIC X(1) COM-5,无符号,X(1)对应的字节数为1,8bit位,最大值为2^(8)-1=255WK12说明:
1.PIC X(1) COM-5,无符号,X(1)对应的字节数为1,8bit位,最大值为2^(8)-1=255
2.赋值为正数,并且大于最大值的场合。
先将4321转换为对应的2进制,再从右向左截取8位。
10进制 16进制 2进制4321 10e1 1000011100001(13位)11100001(8位) = 255
WK13说明:
1.PIC X(1) COM-5,无符号,X(1)对应的字节数为1,8bit位,最大值为2^(8)-1=255
可表示3位数字
2.赋值为负数,并且绝对值大于最大值的场合。
负数为绝对值的反码加1表示,无符号位。
先将转换为负数的绝对值的二进制码,再转换相应的反码,再加1,再从右向左截取8位10进制 16进制 2进制
4321 10e1 1000011100001(13位)11100001(8位) = 255
4321反码 0111100011110
4321反码 +1 0111100011111 = 133
再从左向右截取8位 00011111 = 31
二、编码
EBCDIC编码中:符号位,无符号数字为F,有符号数(S型)为正数的场合为C,负数的场合为D。
Shift-JIS编码中:符号位在最后1byte的上4bit,3代表正数,7代表负数。(指定SIGN时符号占位)
JISコード表
ASCIIコード表
EBCDICコード表
COBOL语言总结(一):COBOL语言总结(一)
后续补充..
COBOL语言总结(二)相关推荐
- COBOL语言总结(一)
一.COBOL简介 COBOL(Common Business Oriented Language)语言.即公用面向商业语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是目前国际上应用最广泛 ...
- 计算机语言cobol,COBOL语言编译器
COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是国际上应用最广泛的一种高级语言.COBOL是英文Common Business-Oriented Language的缩写,原意是面 ...
- Cobol语言基础培训教程
CHAPTER 1 COBOL 概述 COBOL 是Common Business Oriented Language 的缩写.它不仅是商业数据处理的理想语言, 而且广泛用于数据管理领域,因此CO ...
- R语言绘制二维密度图
R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...
- 国二c语言改错题答案,c语言国二考试编程题答案
<c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...
- go语言定义二维数组
使用go语言二维数组 go语言不用管理内存,很多地方使用起来确实很方便,但是在算法方面确实没有C++优秀,特别是缺少像STL一样优秀模板,定义一个二维数组需要进行如下复杂的操作: go语言的二维数组定 ...
- C语言在二叉搜索树找到第k个最小元素(附完整源码)
C语言在二叉搜索树找到第k个最小元素 C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) #in ...
- c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例
在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...
- [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...
最新文章
- 基于i2c子系统的驱动分析
- 会计期间变式OB52
- FFMPEG使用参数详解
- 整理一篇Linux drm显示系统的文章
- SaaS 转化 3 步曲:让用户变客户
- 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
- Python之网络编程(TCP套接字与UDP套接字)
- mysql 数据备份方案_MySQL常见备份方案
- nlp任务分类及适用方法
- maven自动部署到tomcat9
- 微信小程序:使用VantUI组件库
- 计算机网络管理一07872自考知识点,电子信息工程专业2019年10月四川自考科目及考试时间[本科]...
- java web 微博系统_【Java项目】——Java Web完整项目(微博系统)-Go语言中文社区...
- photoshop cs6 下载并安装教程
- 人工智能会议等级列表
- MySQL数据库编程--函数
- MIGO 行项目屏幕增强创建实例
- C# 基于DataGridView实现行选中右键功能
- 《光耦元器件》的特性分析
- 【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器
热门文章
- mysql基础-InnoDB 中的索引
- element-ui小撸背单词页
- pbds库学习笔记(优先队列、平衡树、哈希表)
- [18调剂]华南理工大学软件学院非全日制调剂信息
- 需求:在微信h5页面中下载第三方app —— 安卓, 直接下载apk文件包;iphone,跳转AppStore
- w3shool学习3-PHP 字符串
- 软件能力成熟度模型CMMI
- Fish Li的一些可供下载的资源列表
- Data Mining Machine Learning 之文本预处理 StemmingNoise Words (三)
- CSS中怎么做人头像,用CSS让头像动起来