COBOL上的基本类型大致分为:常量、变量、直接数和结构体。下面只是简单介绍下COBOL中的常量。
常量包括普通常量和象征常量两种,普通常量的内容在定义的同时通过VALUE语句给出,如:"01 NAME PIC 9 VALUE 3.",象征常量通过COBOL中的关键字表示,两种常量的使用方式一样,只是象征常量不用定义,可以直接使用,SPACE(SPACES)代表空格,ZERO代表0,例如:变量NAME的长度为10个字符,则通过语句:MOVE SPACES TO NAME后,NAME的值为10个空格。
接下来看看COBOL中数据的定义方式:
1.字符型 通过PIC X语句定义,定义方式有以下三种:
A. 01 NAME PIC X NAME为长度为1的字符
B. 01 NAME PIC XXX NAME为长度为3的字符
C. 01 NAME PIC X(10) NAME为长度为10的字符
以上的定义中,X的个数与字符的长度一致,长度过长时,可以通过括号来说明字符的长度。
2.整型 通过PIC 9语句定义,这里“9”的含义、用法与上面的"X"相似。
A. 01 NAME PIC 9 NAME为长度为1的整型
B. 01 NAME PIC 999 NAME为长度为3的整型
C. 01 NAME PIC 9(10) NAME为长度为10的整型
定义整型的“9”和定义字符型的“X”是可以同时出现的,表示字符型的数据,如语句:“01 MIX PIC XXX9(3)XXX”,其中“9”出现的位置只能存放数字。
需要说明的是通过这种方式定义的整型是无符号的,代码:
MOVE -10 TO NUM
ADD 10 TO NUM
DISPLAY 'NUM:' , NUM
的输出为:NUM:20
3.浮点数 通过定义符号V表示小数点的位置。如:“01 NAME PIC 99V99”,表示小数点前有两位,小数点后有两位,不过需要注意的是:符号“V”并不占用实际存储空间,也就是说程序只是记录了小数点的位置,但并不开辟一个字节空间来存放小数点,所以对浮点数直接输出时,是看不到小数点的。例如语句:
MOVE 10.09 TO AGE.
DISPLAY AGE.
的输出为1009,而不是期望的10.09,浮点数的输出要通过“Numeric Edited Fields”格式来输出。
4.Signed Numbers符号类型 通过在“9”前面加S来定义,如:“01 AGE PIC S99”,其中“S”和浮点数中的“V”一样,不占存储空间,所以也不能直接输出(+10和-10输出后都是“10”),要通过“Numeric Edited Fields”来输出。