Table of Contents

1. Your First Chapter
序言
如何在PL/I中定义指针
从哪里得到地址

Chapter 1. Your First Chapter

序言

指针,相信大家对这个名词一定不陌生,但真正把指针用好的并不多。

记得在大学时代学习C语言,里面用很大篇幅讲述了指针的用法,当时是懂非懂,真是愧对作者谭浩强老师。工作后看到老先生的COBOL语言教材也是绝对堪称经典,真是有才,佩服佩服。但是在这本教材里,通篇没有提到指针的用法,以至于很多学过、用过的COBOL的人认为COBOL不支持指针,其实只是在COBOL里,指针不常用而已。

在主机的传统开发语言中,无论是Assembler,PL/I,或者COBOL都提供对指针的支持。Assembler自不必说,COBOL里,指针用的不多,PL/I编程,指针的使用则比较常见。对于开发人员来说,熟练地掌握指针,或者说理解内存分配方式,大多比较头疼。

利用周末时间和大家聊一聊PL/I中指针常见BASED和ADDR的用法。 (以上废话,可以跳过)

如何在PL/I中定义指针

DCL EXAMPLE_P POINTR;

EXAMPLE_P在内存中占四个字节,它可以存储数据的地址。它就是指针。 地址大家一定不陌生吧?前几天我在三菱東京UFJ銀行申请了一个账户,说过两周后把卡做好了给我邮送过来,地址如下: 邮编:273-0025 地址:千葉県 船橋市 印内町 643 エクセレント 西船 101

两个小时前邮递员按地址把信给我送了过来,签收之后,OK。

主机中地址是用四个字节的二进制数来表示的。

数据就是通过地址来引用的。我们在程序中定义的变量其实就是地址。

只不过因为我们不是骇客帝国中的厉害角色,看满屏幕的1和0就能看出五彩缤纷的世界。所以给地址起了个友好的名字,这样我们才能更明白。

从哪里得到地址

定义完了指针,我们需要给它一个真正的地址。地址可能来自于某个程序的参数,或者是这个参数的一部分,或者是程序内部的某个地方,总之得给它才行。

DCL FLOUR_ITEM CHAR(6);

EXAMPLE_P = ADDR(FLOUR_ITEM);

这里我们用ADDR函数取得数据FLOUR_ITEM的地址,然后把这个地址给了EXAMPLE_P。