改造Cobol项目应该注意的几个问题
最近在做一个改造项目,把一个很古老的Cobol项目改造为PL/SQL项目。
在最开始的Cobol代码解析的时候,由于对Cobol语言特点的不熟悉,造成了到测试阶段的一些麻烦。
下面就关于Cobol里面字符型,数值型的用法和区别。
以下的说明基于下述变量:
01 T-DECIMAL PIC 9(04)V9(2).
01 T-DECIMAL-R REDEFINES T-DECIMAL.
03 T-DECIMAL1 PIC X(04).
03 T-DECIMAL2 PIC X(02).
01 T-CHAR PIC X(04).
01 T-INTEGER PIC 9(02).
01 T-DECIMAL-ED PIC 9999.99.
01 T-EDIT PIC X(08).
1)初始化
Cobol语言中的字符型声明如下:
01 T-CHAR PIC X(04).
01 T-INTEGER PIC 9(02).
声明两个变量,一个是四位的字符,一个是两位的数值。
在调用初始化语句之前,这两个变量的值都是类似于NULL的。
在调用了INITIALIZE语句,对这两个变量初始化之后,字符串的T-CHAR被初始化成了四个空格,
而数值型的T-INTEGER被初始化为两个0。
以上可知,字符型的变量会被初始化为满位的空格,而数值型的变量会被初始化为满位的0。
2)赋值
下面看一下赋值的情况。
MOVE 123456789 TO T-CHAR.
DISPLAY T-CHAR.
ADD 123 TO T-INTEGER
DISPLAY T-INTEGER.
第一个显示的是1234,第二个显示的是23。
可知,Cobol在处理数值型的时候,如果位数不够,会把前面的舍去,而字符型的是把后面的舍去。
上面的是位数过多的情况,位数不足的情况怎么样呢?
MOVE 12 TO T-CHAR.
DISPLAY T-CHAR.
MOVE 123.45 TO T-DECIMAL.
DISPLAY T-DECIMAL1.
第一个显示的是12 ,第二个显示的是0123,
很有意思的,字符型的会在后面补空格,而数值型的会在前面补0。
3)特殊情况
一个是转型,一个是数值型的运算。
MOVE 1234.56 TO T-DECIMAL.
MOVE T-DECIMAL TO T-DECIMAL-ED.
MOVE T-DECIMAL-ED TO T-EDIT.
DISPLAY T-DECIMAL.
DISPLAY T-EDIT.
MOVE 98 TO T-INTEGER.
ADD 1 TO T-INTEGER.
DISPLAY T-INTEGER.
ADD 1 TO T-INTEGER.
DISPLAY T-INTEGER.
打出来的依次是:+123456,1234.56,+99,+00。
应该说,这个结果是很出乎我的意料的。
T-DECIMAL没有问题,在内存中是不会存储小数点的,打出来+123456时可以理解的。
但是经过转型变换之后,T-EDIT竟然会打印出来小数点,这个很是奇怪,不过事实就是这样,
我个人的估计是Cobol在处理这样的转型的时候,自己加上了小数点。
后面的两个,特别是最后一个,应该还是比较容易理解的。
99加上1就是100,但是这个变量只有两位,把前面的1舍去,就成了00。
这个地方在有运算的时候应该尤其注意。
这是在解析Cobol代码的时候需要注意的地方,同样的,在转换为PL/SQL的时候,这也应该是需要注意的地方。
转载于:https://www.cnblogs.com/game-over/articles/891147.html
改造Cobol项目应该注意的几个问题相关推荐
- 在线机房改造类项目建设难点的研究
摘要 随着IT技术的不断发展,IT设备的运行环境要求越来越高,更新换代的速率也越来越快.其中作为IT系统运行的载体--数据中心,需要持续适应不断提升的运行环境要求. 由于数据中心作为一个建筑,生命周期 ...
- 使用 Xunit.DependencyInjection 改造测试项目
使用 Xunit.DependencyInjection 改造测试项目 Intro 这篇文章拖了很长时间没写,之前也有介绍过 Xunit.DependencyInjection 这个项目,这个项目是由 ...
- Session | 基于Session改造oa项目的登录功能
目录 一:总结域对象 二:基于Session改造oa项目的登录功能 三:oa项目的安全退出系统 一:总结域对象 (1)request(对应的类名:HttpServletRequest) 请求域(请求级 ...
- Spring Boot 如何快速改造老项目?
1 前言碎语 博主公司一个项目在开发中使用某些功能的时候,受限于spring低版本的限制,故索性将整个模块升级为spring boot,在这里做个记录,希望能帮助到有相同场景的朋友. 整个改造过程非常 ...
- 用Flutter改造ZS项目小记一:界面显示一张图片
创建flutter工程 此步骤直接在studio中new Flutter Project 然后下一步即可. 创建程序欢迎界面 创建欢迎界面并一张图片 如何显示这张图片 工程总目录下创建->ass ...
- 大数据学习笔记24:利用MR改造Zebra项目
文章目录 一.提出任务 1.Zebra项目概述 2.日志数据结构分析 3.数据项的含义 3.具体任务 二.准备工作 1.启动hadoop服务 2.上传数据文件到HDFS 3.创建Maven项目MRZe ...
- 用Flutter改造ZS项目小记二:跳转至首页
如何跳转至首页 我们在上一部已经创建了一个只有一个铺满全屏图片的widgit界面,那么我们我们现在想跳转到首页现在需要解决两个问题 如何在launch启动界面呆三秒之后再进行跳转 在flutter中如 ...
- Dubbo 改造普通单体项目
一.新建普通maven项目 1.首先,新建3个普通maven商城项目,模拟以往常见的Java单体应用开发,mall-interface是存放接口和公共代码部分,order-service-consum ...
- 项目实战丨某家具公司机房改造方案
[项目名称] 某家具公司机房改造 [项目设备] [参与微思学员] 参与学员:洪同学 学习课程:思科CCIE,VMware VCP 欢迎关注微信公众号[厦门微思网络].www.xmws.cn专业IT认证 ...
最新文章
- 大学计算机专业选哪个,这么多大学都有计算机专业 究竟选哪个好呢?
- 记一次神奇的SQL查询经历,group by慢查询优化
- OPPO正式公布ColorOS 6系统:Reno新机4月10日首发适配
- Windows编程判断是否为该进程的父进程
- 华为hg-526拨号加路由破解简介
- 半自动驾驶大对决:特斯拉和凯迪拉克谁是真王
- Javascript - demo 与 捷径
- CCNA路由协议总结之IGRP
- Visual Studio Code 配合 Node.js 轻松实现JS断点调试
- C语言2级题pdf百度云,C语言二级考试试题.pdf
- 数据结构c语言版算法设计题,数据结构题集(C语言版)算法设计答案
- (双硬盘(SSD+HDD)/单硬盘)双系统win10+ubuntu18.04安装记录
- Excel 转置分组时如何保留没有对应数据的空组
- vue对vue-giant-tree进行节点操作
- 360如何查看计算机配置文件,win7中怎么查看路由器配置文件config.bin
- day02【Collection、泛型】
- 48种数据分析可视化图表
- 希捷移动硬盘官方测试软件,2TB厚度仅9.6mm 希捷超薄移动硬盘测试
- 7.2_gd-sgd
- 使用numpy数组索引方法获取指定行列位置的数值内容