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)相关推荐

  1. licode学习之erizo篇--Pipeline_service

    Pipeline是媒体处理的核心流程逻辑. Pipeline里面定义了两个主要的概念:Service和Handler. Service负责处理那些不仅要看当前数据包,还要分析之前的数据包的那些业务,比 ...

  2. 树莓派视觉跟踪小车_树莓派智能小车结合摄像头opencv进行物体追踪

    在开发树莓派智能小车的路上已经走了一年多时间了,起初做了以下简单的远程控制和避障功能,后来慢慢加入黑线循迹以及语音识别,物体识别的功能.前段时间在刷新闻头条的时候,偶然看到一外国大牛做的树莓派目标追踪 ...

  3. 视频特效-使用ffmpeg滤镜

    视频特效-使用ffmpeg滤镜 前言 ffmpeg的滤镜分为简单滤镜和复杂滤镜. 复杂滤镜存在多个输入和多个输出如图: 在命令行中可以通过 -filter_complex 或 -lavfi 来使用. ...

  4. HTML5学习笔记 —— JavaScript基础知识

    HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...

  5. licode 学习总结

    licode 学习总结 参考: licode编译以及源码分析:https://www.cnblogs.com/limedia/category/1350712.html Licode-基于webrtc ...

  6. ESP32 应用实践:基于 ULP 的超低功耗浇花设备

    1. 背景和目的 ULP Co-processor 是 ESP32 内置的一颗功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式或是 Deep-Sleep 模式, ULP 协处理器都可以独立运 ...

  7. MAinframe之cobol

    cobol 分四个部分 identifiction division enviroement division. data division.procedure division. environme ...

  8. Interview QA-COBOL COBOL II

    Q1) Name the divisions in a COBOL program ?. A1) IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA ...

  9. COBOL语言总结(一)

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

最新文章

  1. UNIX重定向--dup(2)函数
  2. 单元格格式_你最想要的自定义单元格格式来了!
  3. Typescript常见三种函数类型
  4. centos 使vim支持+python和+python3
  5. [react] 请说说什么是useRef?
  6. 创建ftp服务器后html,搭建ftp服务器需要用到固定IP吗
  7. Python数模笔记-模拟退火算法(1)多变量函数优化
  8. [读书笔记]机器学习:实用案例解析(6)
  9. 2017.5.9 货车运输 思考记录
  10. img 显示base64_用 PySimpleGUI 做程序(7)--显示图片
  11. SQL注入漏洞修复办法
  12. 电子计算机电缆用引流线,本质安全防爆电路用仪表计算机电缆
  13. python单词的含义-python
  14. 如何用5年时间从菜鸟成长为技术总监?
  15. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_01.SpringMVC概述及入门案例
  16. mysql隐式锁_innodB的隐式锁
  17. java企业员工管理系统_基于JavaWeb的企业员工信息管理系统的设计任务书
  18. pdcp层的作用_LTE协议栈总体架构、PDCP层及RLC层概述
  19. linux 安装swig
  20. 使用IIS部署网站步骤

热门文章

  1. 编写函数实现员工信息录入和输出_Excel---最牛的员工档案模板,非常智能化
  2. c语言合法常量e8,c语言合法常量定义
  3. ionic4 hammerjs手势事件左滑右滑
  4. linux 查询mysql编码格式_Linux 修改MySQL编码格式
  5. php 检测键名,【PHP教学|带你学习用PHP检测键名是否位于数组中,方法已经告诉你了,如果你想学就赶紧】- 环球网校...
  6. java字符串相关知识
  7. java对类数组进行排序_Java比较器类对数组进行排序
  8. gamma校正_Log与Gamma校正视频
  9. linux 访问文件软件,Linux下访问文件的基本模式
  10. 计算机网络是一个 系统,计算机网络是一个什么系统