从事银行核心系统设计开发的程序猿
分类: 信息化
2015-05-31 15:38:21
数据区域DTAARA,是一小片存储对象,通常使用1-2k大小的CHAR类型。持久化的命名数据区域,可以在不同job间交互数据。在系统中使用了这种方式存放配置参数,方便做到不重启应用的动态刷新。另外还有几个特殊数据区域,常见的是*LDA,1k大小的job自有共享区域,可用于job内不同程序间的数据交互,起到全局空间的作用。*LDA不能持久化,随着job结束而消失,因此可以认为是一片job特有的内存,不需加锁访问,速度更快。
在程序中使用DTAARA比较简单,参照下面的例子。
C语言
RPG语言
*LDA的例子
命名DTAARA的例子
在IN读取命名数据区域时,可以用*LOCK选择是否加锁。加锁以后,访问数据区域的其他程序就只能读不能写。如果执行到不加*LOCK的OUT,那么写完即释放锁。如果OUT加了*LOCK,那么锁将会继续保持。使用UNLOCK可以直接在不写入的情况下解除锁。
CL及命令行
系统提供了几个命令来操作数据区域。
CRTDTAARA,创建命名数据区域(*LDA不需创建),创建时也可指定初始值,如CRTDTAARA DTAARA(CUSTOMER) TYPE(*CHAR) LEN(100) VALUE('INIT') TEXT(’Customer name area’)
DSPDTAARA,显示或打印数据区域的内容,如DSPDTAARA DTAARA(MYLIB/MYDTA)
RTVDTAARA,获取数据区域内容到CL变量,可以指定从第几位取多少位,如RTVDTAARA DTAARA(*LDA (5,2)) RTNVAR(&VAL)
CHGDTAARA,与获取类似,写入数据区域,如果字符串长度不足补空格,如CHGDTAARA DTAARA(*LDA (5,4)) VALUE('OK'),实际5-8位写入'OK '
DLTDTAARA,删除一个命名数据区域,如DLTDTAARA DTAARA(MYLIB/MYDTA)