压缩型数据类型
来源:互联网 发布:ps4版辐射4捏脸数据 编辑:程序博客网 时间:2024/06/11 05:29
业务场景:
1.通过交易将EXECL表中数据LOAD到主机中
遇到难题:
1.带符号位的数据录入时保持,SQLCODE=-804,显示出的数据为乱码
根本原因:
1.主机编码格式为EBCDIC,不是ASCII。
处理方法:
1.修改EXECL表中带符号位的数据。
总结:
1.通过交易将数据以FTP的方式传入主机,会生成数据文件,若数据为负数时,则末尾为小写英文字母(p,q,r,s,t,u,v,w,x,y,z)。
eg.
若主机中数据项为:
01 RTFW-RATEPIC S9(4)V9( 8) COMP-3.
将“3.14”写入EXECL并导入,OK
将“-3.14”写入EXECL并导入,ERROR。必须写成“-3.14000000”,则OK。该数据在主机中显示为00031400000p.(p表示0)
将“-3.14000002”写入EXECL并导入,OK。该数据在主机中显示为00031400000r.(r表示2)
将“-3.14000078”写入EXECL并导入,OK。该数据在主机中显示为00031400007x.(x表示8)
.......注意EXECL文档为ASCII编码格式:
这种问题时常发生,今天与遇到了一时半会还没想起来。。顺便整理了下COBOL的常见压缩类型复习复习。
(1) Write out number to file by following format:
01 FILLER.
05 …
05 NUMBER-1 PIC 9(5)V99.
05 …
05 NUMBER-2 PIC 9(5)V99COMP-3.
05 …
05 NUMBER-3 PIC 9(5)99COMP.
The first output record use positive value.
The second output record use negative value.
Cheak the output,use the "hex on" on TSO,read and understand.
What should be.
解答
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT TESTOUT ASSIGN TO TESTOUT.
DATA DIVISION.
FILE SECTION.
FD TESTOUT.
01 TEST1-REC.
05 FILLER PIC X.
05 NUMBER-1-POSI PIC 9(5)V99.
05 FILLER PIC X.
05 NUMBER-1-NEGA PIC 9(5)V99.
05 FILLER PIC X.
05 NUMBER-2-POSI PIC 9(5)V99 COMP-3.
05 FILLER PIC X.
05 NUMBER-2-NEGA PIC 9(5)V99 COMP-3.
05 FILLER PIC X.
05 NUMBER-3-POSI PIC 9(5)V99 COMP.
05 FILLER PIC X.
05 NUMBER-3-NEGA PIC 9(5)V99 COMP.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
PROCEDURE DIVISION.
000-OPEN-MOVE.
OPEN OUTPUT TESTOUT.
MOVE 1234567 TO NUMBER-1-POSI
MOVE -1234567 TO NUMBER-1-NEGA
DISPLAY 'NUMBER-1-POSI : ' NUMBER-1-POSI
DISPLAY 'NUMBER-1-NEGA : ' NUMBER-1-NEGA
MOVE 1234567 TO NUMBER-2-POSI
MOVE -1234567 TO NUMBER-2-NEGA
DISPLAY 'NUMBER-2-POSI : ' NUMBER-2-POSI
DISPLAY 'NUMBER-2-NEGA : ' NUMBER-2-NEGA
MOVE 1234567 TO NUMBER-3-POSI
MOVE -1234567 TO NUMBER-3-NEGA
DISPLAY 'NUMBER-3-POSI : ' NUMBER-3-POSI
DISPLAY 'NUMBER-3-NEGA : ' NUMBER-3-NEGA
WRITE TEST1-REC.
CLOSE TESTOUT.
STOP RUN.
运行效果:
终端显示如图:
注意COMP-3型数据的存储:(长度/2)+ 1 个字节。
COMP型数据的存储 :1~4,占2个字节
5~9,占4个字节
10~18,占8个字节。
十六进制的运算,如NUMBER-2-POSI,占4个字节。将123456700存入,即3456700
注意!!! 该数据项的格式为9(5)V99 COMP. 插入的数据不含小数位,小数位自动以0作为填充,计算十六进制此处必须加上小数位!!!即, 9(5)V99 COMP.
由于没有设置符号位S,所以转换后不会存在正数C或负数D。
PCOM中显示16进制为上下依次排列;右边不足的以F进行填补。
在如NUMBER-3-POSI,存入COMP中,即十进制转换成16进制。
转换方法(10转16进制):
十六进制有16个基数,0~9,A(A=10),B(B=11),C(C=12),D(D=13),E(E=14),F(F=15).
十六进制的8421原则(要么1、要么0),
10 0 0/ 0 1 0 0 / 0 0 1 0 / 0 0 01
该位值为8 该位值为4 该位值为2 该位值为1
题中将3456700以COMP型存储并计算16进制,
将3456700/16=216043···12 即转为16进制的第一位:C
再将216043/16=13502···11 即转为16进制的第二为:B
再将13502/16=843···14即转为16进制的第三为:E
再将843/16=52···11即转为16进制的第四为:B
再将52/16=3···4即转为16进制的第五位为:4、3
则十六进制为34BEBC,由于该数据项占4个字节,所以缺失为补0.
即0034BEBC。
另外,因为显示压缩型的数据,因此不会做显示。通常默认的为[USAGE IS] DISPLAY.即该数据项适用于打印、显示,采用的是标准格式(一个字节放一个字符)。
- 压缩型数据类型
- 压缩
- 压缩
- 压缩
- 压缩
- 压缩
- 压缩
- 压缩
- 压缩
- ruby-数据类型-数值型
- 数据类型中boolean型
- oracle 数据类型---字符型
- oracle 数据类型---数值型
- Date型引用数据类型
- 数据类型之浮点型
- 数据类型之字符型
- mysql数据类型-数值型
- 数据类型
- 机器学习周刊第一期:Hello World
- FZU 2186 小明迷宫寻宝 状压Dp
- vector iterators incompatible
- 最小生成树(MST)——Prim算法
- oracle基础学习一
- 压缩型数据类型
- hdu1002 高精度之A+B
- 玩命牛的成长记录(三)——盒子模型
- 人工智能、机器学习和数据挖掘三者之间的关系
- UVA - 10883 Supermean
- android TV app开发-准备环境,打开adb
- notepad++下编译c
- 计算机类论文在哪里投稿?
- Java文件下载详解