精通cobol--9.12.2 使用SET语句对索引进行算术运算

对索引变量进行算术运算操作,仍然需要使用SET语句。以下依然结合上面定义的超市管理系统的索引表,通过几个小例子进行讲解。

1)假设STORE-NDX已存有数据。现要求以该索引变量为基准,其后偏移2位索引的进货商品编号。这里并不知道当前STORE-NDX中的数据为多少。因此,必须使用算术运算,直接将STORE-NDX加上2,再以此引用指定数据。代码如下。

SET  STORE-NDX  UP  BY  2.

MOVE  STORE-ITEM-NUM   ( STORE-NDX)  TO RESULT-STORE-NUM.

2)假设SALE-NDX已存有数据。现要求以该索引变量为基准,往前偏移2位索引的进货商品名称。注意到,这里是往前偏移,而不是往后偏移。因此,完成本例要求的代码如下。

SET   SALE-NDX  DOWN  BY  2.

MOVE  SALE-ITEM-NAME   ( SALE-NDX)  TO  RESULT-SALE-NAME.

3)假设STORE-NDXSALE-NDX中均已存有数据。分别求取当前索引后偏移3位的进货商品名称和售出商品名称。这里涉及到对两个不同索引变量进行相同的操作,即都增加3。因此,同样可以使用一条SET语句一并完成。代码如下。

SET   STORE-NDX  SALE-NDX  UP BY  3.

MOVE  STORE-ITEM-NAME  (STORE-NDX)  TO RESULT-STORE-NAME.

MOVE  SALE-ITEM-NAME  (SALE-NDX)  TO RESULT-SALE-NAME.

4)假设程序中另外存在一个整型数据变量TEMP-DATA。现要求将STORE-NDX加上该变量中保存的数据,并将SALE-NDX减去此数据。本例主要是为了说明,使用SET语句进行算术运算时,同样可以包含普通变量。实现本例功能的代码如下。

SET   STORE-NDX  UP  BY  TEMP-DATA.

SET   SALE-NDX    DOWN  BY  TEMP-DATA.

注意:当使用SET语句时,语句中必须至少包含一个索引变量。例如,下面的几条SET语句都没有包含索引变量,都是错误的。

SET  3  TO  TEST-DATA.

SET  TEST-DATA  UP  BY  2.

SET  TEST-DATA-1  DOWN  BY  TEST-DATA-2.

 

你可能感兴趣的:(精通cobol--9.12.2 使用SET语句对索引进行算术运算)