用PIC型中间变量解决Fixed赋值溢出abend

我在Debug一个PLI程序PRGM000的时候遇到了一个CEE34A abend,报的错误信息如下:
You were prompted because the CEE34A condition was raised in your
program.
CEE34A is a severity or class 3 condition.
The operating system has generated the following message:
CEE3210S The system detected a decimal-overflow exception (System
Completion Code=0CA).
The current location is PRGM000 ::> PRGM000 :> 2688.

不废话,直接上截图:
CEE3201S 0CA abend

从图上可以看出,出错的语句是:TBL_KEY1.TRADE_DATE = COMM_AREA.TRADE_DATE

我们来看二者的定义:
COMM_AREA.TRADE_DATE的定义:
1 COMM_AREA
2 USER_AREA,
...
5 TRADE_DATE FIXED(9), /* 20110901 */
...;

TBL_KEY1.TRADE_DATE的定义
DCL 1 TBL_KEY1
3 SPARE_CLIENT CHAR(4),
3 IDENT_ID CHAR(9),
3 TRADE_DATE FIXED(7),
3 NUM FIXED(3);

所以很明显,发生abend的原因是把一个FIXED(9)的值赋给了一个FIXED(7)的变量,从而产生了溢出。

下面是解决办法:
定义一个PIC类型的中间变量”PIC_TRADE_DATE_9″做转换桥梁:

DCL PIC_TRADE_DATE_9 PIC '(9)9' INIT(0);
PIC_TRADE_DATE_9 = COMM_AREA.TRADE_DATE;
(值:020110901)        (值:20110901)
TBL_KEY1.TRADE_DATE = SUBSTR (PIC_TRADE_DATE_9,4,6);
(值:110901)          (值:110901)

到这里,问题已经得到解决。
(ps:谁能知道wordpress如何能保持代码的对齐啊?晕死的这个…)

分享到:

wordpress博客搬家

这两天换了个空间商,不免要亲历Wordpress博客搬家过程。发现多数的空间商用的虚拟主机后台管理面板都是齐刷刷的”StarOut FreeHost System”,即星外虚拟主机管理平台,MySql数据库的高级管理面板呢,都是齐刷刷的“phpMyAdmin 2.7.0-pl1”,这些无疑都为网站搬迁带来了方便。

由于不涉及到更改域名,那么本人的wordpress博客搬迁,归纳起来可以归结为以下4件事:

1、网站文件的搬迁
要将网站的所有文件和网页都从旧服务器搬迁到新服务器,可以使用星外虚拟主机管理面板里面自带的“网站搬家”功能,搬家过程中,您可以在/db/ftplog.txt文件中看到整个搬家的命令操作过程。不过我在使用过程中貌似有出现过搬的不彻底的情况,所以,我还是用FTP软件,将本地备份好的整个网站传到新服务器。由于文件数目过多,传输很慢。所以,可以使用管理面板中“在线压缩/解压”的这个功能,首先在本地将整个网站文件压缩,用ftp传到/db文件夹下,然后再在管理面板解压到/web目录下,这样就快多了。

2、网站数据库的搬迁
wordpress的数据库中一般有10个wp_开头的表:wp_comments、wp_links、wp_options、wp_postmeta、wp_posts、wp_term_relationships、wp_term_taxonomy、wp_terms、wp_usermeta、wp_users。这里不详细说这些表的具体用途(从表名也能猜出个大概吧),还有其他的表的话应该是你安装的插件生成的表。
首先,登陆你旧服务器,在数据库高级管理中利用phpMyAdmin 2.7.0-pl1将整个数据库(即上述10个表的数据)下载下来,然后登陆新的服务器,同样利用phpMyAdmin 2.7.0-pl1将收据库导入即可。

3、修改数据库信息文件
在/web/wp-config.php中对数据库名,用户名/密码,数据库ip做相应修改。

4、域名重新设置解析
登陆你的域名注册商网站,在DNS解析设置中,将解析IP从旧ip改成新虚拟主机的IP。

如果不出什么意外的话,执行完上面4步,你的wordprss博客应该算搬迁完毕了。由于我之前利用“cos-html-cache插件+自定义404.php页面” 来实现了伪静态,所以我还必须在新虚拟主机管理面板中将默认的404页面改成使用自定义的404出错页面,否则,会出现很多链接无法访问的现象。如果你没有使用“cos-html-cache插件+自定义404.php页面”,那么就可以省略这一步了。

分享到:

利用SRCHFOR在PDS中搜索字符串

之前的文章说到了一个叫”Mem xxx“的命令可以用来在一系列PDS中搜索一个名字叫做xxx的member,那么今天我来说下如何在一个PDS里面所有的member内容当中搜索特定字符串。其实就是利用search-for 的应用程序,比较常规的方法是道ISPF的3.14菜单里面搜索,如下图所示,就是在 “IBMUSER.PROJ.TEST.JCL”这个PDS里面所有的member内容中,搜索一个叫“STRING”的字符串:
PDS SRCHFOR search-for utility 当然,如果你想直接在当前PDS下调用search-for utility来搜索特定字符串,可以在command line上输入命令:SRCHFOR “STRING”来在当前PDS下面搜索字符串”STRING“,具体如下面2张截图所示:
PDS SRCHFOR search-for utility
PDS SRCHFOR search-for utility

如果我想同时在多个PDS当中搜索一个字符串,或者多个字符串那么该如何做呢?这时你可能就需要用到JCL来调用ISRSUPC这个utility了。这个ISRSUPC的功能可强大多了,具体可以参照下我之前的文章:用ISRSUPC在PDS所有member中搜索指定字符串,这里就不再重复了。

分享到: