cobol语言中2行定义如何理解2
发布网友
发布时间:2023-11-09 06:59
我来回答
共1个回答
热心网友
时间:2024-01-03 05:15
002490 WORKING-STORAGE SECTION.
002490,顺序号,对于程序的理解来说,无意义。
工作存储节,在这里定义的都是程序执行过程中所要用到的中间变量。
002490 01 SQLSVA GLOBAL.
这是个GROUP ITEM,谭浩强老师把它翻译为组合项,你可以理解为结构体,
这个结构体的名字是SQLSVA,并且这个结构体是GLOBAL属性的,即全局可见,这种属性在一个文本中包含有多个程序时有用。
01是层号,层号可以从01到49,数字越小,级别越高,像上面这段代码,01由下面的6个02层组合而成。
002490 02 PIC 9(9) COMP-5 VALUE 6.
elementary item,谭浩强老师把它翻译为初等项,你可以理解为结构体中的一个成员,这个成员是最基本的了,即这个成员不再由别的什么成员组合而成。
这个成员不会被直接引用,所以把变量名的定义也省了,像上面的01 SQLSVA GLOBAL中,SQLSVA就是变量名,在程序中可以引用它,比如INITIALIZE SQLSVA.
PIC 9(09)表示仅保存0和正数,可以保存的最大数值为十进制的999999999。
COMP-5,二进制的一种存储类型,存储顺序和硬件机型有关,和COMP刚好相反,比如65534这个数值,如果定义为COMP,则在一般机器中,存储顺序为"FFFE",如果定义成COMP-5,存储顺序则为"FEFF"。
VALUE 6表示初值为6。
002490 02 PIC 9(9) COMP-5 VALUE 1.
同上,不再赘述,初值为1。
002490 02 PIC 1(32) BIT SYNC VALUE B'00000101000000000000000010000001'.
PIC 1(32) BIT,表示位(BIT)长32,即4个字节,
SYNC表示按机器字边界对齐,比如一般机器一个字长为4个字节,那么这个初等项要从字的边界处开始,这样可以避免这个4字节初等项的存储跨越两个字,因为机器从内存中取数据时一般一次取一个字,这样可以避免取两次,从而提高效率,在这个程序片断中,这样指定也许还有别的用意,因为这个初等项没有指定变量名,不能直接引用。
VALUE B'00000101000000000000000010000001'表示初值是左边这一串二进制数值,即十六进制的“05000081”。
002490 02 SQLSVA001 POINTER.
SQLSVA001是个指针型的变量,在ANSI标准中,COBOL并不支持指针,但实际上很多编译器厂家都有此扩展。
002490 02 PIC 9(9) COMP-5 VALUE 2.
不再赘述。
002490 02 PIC 1(32) BIT SYNC VALUE B'11111111000000000000000010000001'
不再赘述,其初值为十六进制的"FF000081"。
这段代码应该和SQL SERVER有关,不过我对SQL SERVER不熟,你可以查一下相关文档。