过程部二
一、传送语句(MOVE语句)的较高技巧 (SAMPLE5-1)
1. 各种类型数据之间的传送
非法的传送
(1) 数值编辑项、字符编辑项、SPACE、字母数据项不能传送给数值数据项或数值编辑项。
(2) 数值常量、ZERO,数值数据项、数值编辑项不能传送给字母数据项。
(3) 非整数的数值数据项或数值常量不能传送给字符数据项或字符编辑数据项。
合法的传送
(1) 接收项为字符数据项或字符编辑项,而发送项的长度大于接收项的,按“对齐原则”(一般为左对齐,当有JUSTIFIED子句时为右对齐),超过部分截断,如果长度小于接收项的,多余位置补空格。
(2) 接收项是数值项或数值编辑项(初等项),可以接受数值型的数据以及内容全为数字的字符型数据。在接受数值型数据时,按小数点位置对齐,多余位补零。
如果接收项是带符号的数值项,发送项的符号也要求传送。
如果接收项是不带符号的数值项,按发送项的绝对值传送。
如果发送项是字符型数据项,而其内容全为数字,则按无符号整数发送。整数传送时按右对齐,左截断。小数传送时,则按小数点对齐原则。
(3) 接收项是字母型,按左对齐原则接受字母字符,多余位置补空格。但它不能接受非字母的字符
2. 组合项的传送
组合项的传送是将发送项的内容不加转换的一个字节一个字节的顺序传送到接收项。
(1) 发送项和接收项都是组合项,而且其结构和描述均相同。则可看作将各初等项一一对应传递。
(2) 如果发送项与接收项长度相同,但数据形式不同,则将发送项的内容原样不变的自左而右顺序的传送到接收项。它不是按初等项传送的,而将各字节内容自左而右一一传递过去。如果发送项与接收项长度不同,则按下面规则处理:左对齐,右补空格,多余位截取。
3. 对应传送(CORRESPONDING子句的MOVE语句)
(1) 数据名的受限和受限名的传送。
用上属层的数据名来对下属层的数据名加以“限定”,使其成为唯一。这种方法,称为数据名的受限。数据名和限定符之间用OF IN 来连接。如果限定一次不能成为唯一,则可以限定多次,数据名在受限后构成一个整体称为受限名。
(2) CORRESPONDING子句的传送——对应传送(同名传送)
对应传送的功能是:把一个组合项中的若干项传送给另一组合项中同名的项。
一般形式为
      CORRESPONDING
MOVE                          标识符1 TO 标识符2
            CORR
说明:
如果两个组合项包括的项不同,则只能传送同名的项。
传送的两者间必须有成对的同名数据项,而且这一对中必须至少有一个项是初等项。否则不能作为对应项传递。
所谓同名,指的是他们有相同的全程受限
带有RENAMES子句或REDEFINES子句或OCCURS子句的数据项不予以传送。
        例:02 A                                    02 B
            03 A1 PIC 9(3)                            03 A1  PIC 99V99.
            03 A2 PIC 9(2)V99                        03 A3  PIC 9V9
            03 A3 PIC 9V9                            03 A2  PIC 99V99
二、算术运算语句的较高技巧(SAMPLE5-2)
1.四舍五入处理(ROUNDED子句)
  例:ADD A , B TO C ROUNDED  表示在截断后的一位四舍五入,即 A + B + C => C 四舍五入
2.长度溢出处理:计算结果的整数部分的长度如果比结果数据项描述所规定的整数部分长,则称长度溢出。
  例: MUTIPLY A BY B GIVING C
                ON SIZE ERROR DISPLAY ‘SIZE ERROR’
                STOP RUN
  说明:在发生溢出时,在用 ON SIZE ERROR 子句时,错误的结果不存入结果数据项。
        如果有几个计算结果,有的发生溢出,有的未发生溢出,未发生溢出的计算结果正常存入结果数据项,只有发生溢出的结果不存入。
        ROUNDED ON SIZE ERROR 一起使用时,先用ROUNDED做舍入处理,再判断是否溢出。
4. 对应项间的运算
算术运算语句中的ADD , SUBSTRACT语句除了可以用来使两个或多个单个的数据项进行加减运算外,还可以用来使两个组合项中的对应项进行加减的计算。
一般格式    CORRESPONDING
    ADD                      标识符TO  标识符2 [ROUNDED]
              CORR
[ON SIZE ERROR 强制语句]
      注意:只有加法和减法才能进行有CORR的操作,而且对应项除了名字相同外,数据类型必须是数值型。
        例:
            02 A                                    02 B
            03 A1 PIC 9(3)                            03 A1  PIC 99V99.
            03 A2 PIC 9(2)V99                        03 A3  PIC 9V9
            03 A3 PIC 9V9                            03 A2  PIC 99V99
5.除法语句中的余数子句(REMAINDER子句)
  例: DIVIDE 1.5 INTO 7 GIVING C REMAINDER D.
  说明:(1)商和余数的值不仅取决于被除数和余数,还取决于数据部中对商和余数的描述
2)如果用ROUNDED子句,它只对商起作用。
3)长度溢出也只检查商的值是否溢出。
三、IF语句的高级技巧(SAMPLE5-3)
    1IF语句的嵌套
        在嵌套的选择结构中,只能在最外层的选择结构中使用一个句点。
    2.关系表达式关系
        关系表达式是以一个关系比较符将两个数据项联系起来的式子。
        例: X > Y
        关系比较符有两种形式:一种是接近数学符号的;一种是接近英语的。
    3.符号条件
        一般形式
              数据名                        POSITIVE
                          IS [NOT]        NEGATIVE
            算术表达式                        ZERO
        例: IF X IS POSITIVE DISPLAY X.
    4.类型条件
        各个类型的数据项可以使用的条件类型
标识符类型
可用的条件类型
肯定型
否定型
数值型
NUMERIC
NOT NUMERIC
字母型
ALPHABETIC
NOT ALPHABETIC
字符型
NUMERIC
ALPHABETIC
NOT NUMERIC
NOT ALPHABETIC
        一般形式
                      NUMERIC
  标识符  IS [NOT
                      ALPHABETIC
5.条件名条件
  一个初等项只能根据某些条件取预定的几个值,或只能在一个预定的范围中取值,则这个变量称为条件变量。用来表示条件变量当前值的名字叫条件名
(1) 条件名如何说明。
条件名和条件变量要建立一定的联系,这应在数据部中说明。
例: 77  X(条件变量)  PIC 9(6).
    88  X1 VALUE 0    THRU 99.
      88  X2 VALUE 100  THRU 999.
      88  X3 VALUE 1000  THRU 9999.
字符串长度如何定义其中X1,X2,X3为条件名。条件名用层号88,紧跟在条件变量之后说明。经过以上在数据部的说明后,就可以在过程部中使用条件名条件。
IF X1 MOVE A TO B. (0 <= X < 100 )
IF X2 MOVE A TO C.
IF X3 MOVE A TO D.
6.复合条件
  NOT AND , OR
  求复合条件的顺序:(1)先求出每一个简单条件的值
                    2)再进行逻辑运算,先进行NOT运算
                    3)再进行AND运算
                    4)进行OR运算
四、字符串连接语句(STRING语句)
    STRING语句用来将多个非数值型的数据项的值连接起来送到一个接收数据项中,在合并过程中可以删除某些指定的字符。
    STRING语句的几种形式:
说明:A  =  ‘HELLO ’
    B  =  ‘WORLD ’
                  C  =  ‘ ! ’
1. STRING A , B , C DELIMITED BY SIZE INTO D.
则:  D  =  ‘HELLO WORLD ! ’
该语句将A的内容从左到右传递给D,再将B的内容从左到右传递给D,之后是C如果有多个数据项则过程类似。
其中:DELIMITED用来控制各个发送项的终止位置。
例如:DELIMITED BY SIZE表示将整个发送项的字符全部送到接收项。
2. STRING A , B , C DELIMITED BY SPACE INTO D.
STRING A  DELIMITED BY ‘O’

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。