MainFrame小结(20110812)--MOVE ALL与INITIALIZE(cobol)
MOVE ALL
上次说到MOVE字符类型(alphanumeric)是按左对齐原则的,但如果我想不断重复填充相同的字符呢?那就要用MOVE ALL了,比如MOVE ALL SPACE TO WS-A,那么WS-A空间将会全被填充为空格。
MOVE ALL有几个特性:
MOVE ALL后面的常量只能是一个字符。
MOVE ALL后面跟的只能是COBOL定义的常量(如SPACE,ZERO等等)和字面常量(就是单双引号中的字符,如'A','*')。MOVE ALL后面不能跟数据项,比如MOVE ALL WS-B TO WS-A,是不允许的。但有一种替代的方法,就是使用INSPECT,如INSPECT WS-A REPLACING CHARACTERS BY WS-B。WS-A将从左到右不断用WS-B填充(WS-B必须是一个字节的)。
对于COBOL定义的常量(如SPACE,ZERO等等),MOVE 【COBOL常量】等同于MOVE ALL 【COBOL常量】。
例:
---1----+----2----+----3----+----4----+----5----+
05 WS-A PIC X(5) VALUE 'ABCDE'.
05 WS-B PIC X(1) VALUE 'B'.
* 1.after move all zero
MOVE ALL ZERO TO WS-A
DISPLAY WS-A
* 2.after move all 'A'
MOVE ALL 'A' TO WS-A
DISPLAY WS-A
* 3.after replace by 'B'
INSPECT WS-B REPLACING CHARACTERS BY WS-B
DISPLAY WS-A
结果:
00000
AAAAA
BBBBB
INITIALIZE
INITIALIZE非常简单,就如你想的那样。初始化一个组合项,下面的子项:字母型(alphabet)和字符类型(alphanumeric)将被初始化为空格。数值型(numeric)将被初始化为0。编辑型(alphanumeric-edit)中占位的字符部分,如加号、点号等就初始为加号,点号,而数值部分初始为0。
值得注意的一点是FILLER和没有名字的数据项,INITIALIZE将不对他们进行操作。原因在于很多时候我们定义FILLER和没有名字的数据项都是为了不再改变他们的值。如果想改变他们还是有办法的,比如使用MOVE ALL SPACE TO WS-A,那么下面的FILLER和没有名字的数据项就变成空格了,或者算好他们的起始位置和长度,然后使用 MOVE WS-B TO WS-A(WS-START:WS-LEN)覆盖他们的值。
例:
---1----+----2----+----3----+----4----+----5----+
05 WS-GROUP.
10 WS-A PIC X(2) VALUE 'AB'.
10 WS-B PIC 9(2) VALUE '12'.
10 WS-C PIC +9.9 VALUE '+3.4'.
10 FILLER PIC X VALUE ','.
10 PIC X VALUE '*'.
* 1.original
DISPLAY WS-GROUP
* 2.after init,filler and no name item would not
* override
INITIALIZE WS-GROUP
DISPLAY WS-GROUP
* 3.move space to WS-GROUP,then init it.
MOVE ALL SPACE TO WS
INITIALIZE WS-GROUP
* 4.override filler and no name item,then init it
MOVE ',' TO WS-GROUP(9:1)
MOVE '*' TO WS-GROUP(10:1)
INITIALIZE WS-GROUP
结果:
AB12+3.4,*
bb00+0.0,*
bb00+0.0bb
bb00+0.0,*
b表示空格(x'40')
转载于:https://www.cnblogs.com/icescut/archive/2011/08/13/cobol_moveall_initailize.html
MainFrame小结(20110812)--MOVE ALL与INITIALIZE(cobol)相关推荐
- licode学习之erizo篇--Pipeline_service
Pipeline是媒体处理的核心流程逻辑. Pipeline里面定义了两个主要的概念:Service和Handler. Service负责处理那些不仅要看当前数据包,还要分析之前的数据包的那些业务,比 ...
- 树莓派视觉跟踪小车_树莓派智能小车结合摄像头opencv进行物体追踪
在开发树莓派智能小车的路上已经走了一年多时间了,起初做了以下简单的远程控制和避障功能,后来慢慢加入黑线循迹以及语音识别,物体识别的功能.前段时间在刷新闻头条的时候,偶然看到一外国大牛做的树莓派目标追踪 ...
- 视频特效-使用ffmpeg滤镜
视频特效-使用ffmpeg滤镜 前言 ffmpeg的滤镜分为简单滤镜和复杂滤镜. 复杂滤镜存在多个输入和多个输出如图: 在命令行中可以通过 -filter_complex 或 -lavfi 来使用. ...
- HTML5学习笔记 —— JavaScript基础知识
HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...
- licode 学习总结
licode 学习总结 参考: licode编译以及源码分析:https://www.cnblogs.com/limedia/category/1350712.html Licode-基于webrtc ...
- ESP32 应用实践:基于 ULP 的超低功耗浇花设备
1. 背景和目的 ULP Co-processor 是 ESP32 内置的一颗功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式或是 Deep-Sleep 模式, ULP 协处理器都可以独立运 ...
- MAinframe之cobol
cobol 分四个部分 identifiction division enviroement division. data division.procedure division. environme ...
- Interview QA-COBOL COBOL II
Q1) Name the divisions in a COBOL program ?. A1) IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA ...
- COBOL语言总结(一)
一.COBOL简介 COBOL(Common Business Oriented Language)语言.即公用面向商业语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是目前国际上应用最广泛 ...
最新文章
- UNIX重定向--dup(2)函数
- 单元格格式_你最想要的自定义单元格格式来了!
- Typescript常见三种函数类型
- centos 使vim支持+python和+python3
- [react] 请说说什么是useRef?
- 创建ftp服务器后html,搭建ftp服务器需要用到固定IP吗
- Python数模笔记-模拟退火算法(1)多变量函数优化
- [读书笔记]机器学习:实用案例解析(6)
- 2017.5.9 货车运输 思考记录
- img 显示base64_用 PySimpleGUI 做程序(7)--显示图片
- SQL注入漏洞修复办法
- 电子计算机电缆用引流线,本质安全防爆电路用仪表计算机电缆
- python单词的含义-python
- 如何用5年时间从菜鸟成长为技术总监?
- 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_01.SpringMVC概述及入门案例
- mysql隐式锁_innodB的隐式锁
- java企业员工管理系统_基于JavaWeb的企业员工信息管理系统的设计任务书
- pdcp层的作用_LTE协议栈总体架构、PDCP层及RLC层概述
- linux 安装swig
- 使用IIS部署网站步骤
热门文章
- 编写函数实现员工信息录入和输出_Excel---最牛的员工档案模板,非常智能化
- c语言合法常量e8,c语言合法常量定义
- ionic4 hammerjs手势事件左滑右滑
- linux 查询mysql编码格式_Linux 修改MySQL编码格式
- php 检测键名,【PHP教学|带你学习用PHP检测键名是否位于数组中,方法已经告诉你了,如果你想学就赶紧】- 环球网校...
- java字符串相关知识
- java对类数组进行排序_Java比较器类对数组进行排序
- gamma校正_Log与Gamma校正视频
- linux 访问文件软件,Linux下访问文件的基本模式
- 计算机网络是一个 系统,计算机网络是一个什么系统