一、数据类型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语言总结(二)相关推荐

  1. COBOL语言总结(一)

    一.COBOL简介 COBOL(Common Business Oriented Language)语言.即公用面向商业语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是目前国际上应用最广泛 ...

  2. 计算机语言cobol,COBOL语言编译器

    COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是国际上应用最广泛的一种高级语言.COBOL是英文Common Business-Oriented Language的缩写,原意是面 ...

  3. Cobol语言基础培训教程

    CHAPTER   1 COBOL 概述 COBOL 是Common Business Oriented Language 的缩写.它不仅是商业数据处理的理想语言, 而且广泛用于数据管理领域,因此CO ...

  4. R语言绘制二维密度图

    R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...

  5. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  6. go语言定义二维数组

    使用go语言二维数组 go语言不用管理内存,很多地方使用起来确实很方便,但是在算法方面确实没有C++优秀,特别是缺少像STL一样优秀模板,定义一个二维数组需要进行如下复杂的操作: go语言的二维数组定 ...

  7. C语言在二叉搜索树找到第k个最小元素(附完整源码)

    C语言在二叉搜索树找到第k个最小元素 C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) #in ...

  8. c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例

    在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...

  9. [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...

最新文章

  1. 基于i2c子系统的驱动分析
  2. 会计期间变式OB52
  3. FFMPEG使用参数详解
  4. 整理一篇Linux drm显示系统的文章
  5. SaaS 转化 3 步曲:让用户变客户
  6. 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
  7. Python之网络编程(TCP套接字与UDP套接字)
  8. mysql 数据备份方案_MySQL常见备份方案
  9. nlp任务分类及适用方法
  10. maven自动部署到tomcat9
  11. 微信小程序:使用VantUI组件库
  12. 计算机网络管理一07872自考知识点,电子信息工程专业2019年10月四川自考科目及考试时间[本科]...
  13. java web 微博系统_【Java项目】——Java Web完整项目(微博系统)-Go语言中文社区...
  14. photoshop cs6 下载并安装教程
  15. 人工智能会议等级列表
  16. MySQL数据库编程--函数
  17. MIGO 行项目屏幕增强创建实例
  18. C# 基于DataGridView实现行选中右键功能
  19. 《光耦元器件》的特性分析
  20. 【vcpkg】vcpkg:用于 Windows、Linux 和 macOS 的 C++ 包管理器

热门文章

  1. mysql基础-InnoDB 中的索引
  2. element-ui小撸背单词页
  3. pbds库学习笔记(优先队列、平衡树、哈希表)
  4. [18调剂]华南理工大学软件学院非全日制调剂信息
  5. 需求:在微信h5页面中下载第三方app —— 安卓, 直接下载apk文件包;iphone,跳转AppStore
  6. w3shool学习3-PHP 字符串
  7. 软件能力成熟度模型CMMI
  8. Fish Li的一些可供下载的资源列表
  9. Data Mining Machine Learning 之文本预处理 StemmingNoise Words (三)
  10. CSS中怎么做人头像,用CSS让头像动起来