AS/400平台更新PF数据出新招
按照传统处理办法,会首先考虑使用RPG语言处理,如下面的ZIJ10R程序(ZCPSTP 親工程順序番号''''U''''标志清除 /BATCH )。
Work with Members Using PDM S65F6F8B
File . . . . . . QRPGSRC
Library . . . . R21EMS Position to . . . . .
Type options, press Enter.
2=Edit 3=Copy 4=Delete 5=Display 6=Print 7=Rename
8=Display description 9=Save 13=Change text 14=Compile 15=Create module...
Opt Member Type Text
ZIJ10R RPG ZCPSTP 親工程順序番号''''U''''标志清除 /BATCH
ZIJ101R RPG 备案完成数据备份
ZIJ102R RPG 备案完成CM数据备份
ZIJ201R RPG 变更数据提取
ZIJ202R RPG 变更数据提取/TRF专用
ZIK01R RPG 正式报核:料件库存数据生成(归类)
ZIK02R RPG 正式报核:成品库存数据生成(归类)
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F6=Create
F9=Retrieve F10=Command entry F23=More options F24=More keys
处理PF文件的某个字段内容,RPG语言的模板(颜色区别PF、PFR、FIELD)如下:
Columns . . . : 1 71 Browse R21EMS/QRPGSRC
SEU==> ZIJ10R
FMT * ..... *. 1 ... ... 2 ... ... 3 ... ... 4 ... ... 5 ... ... 6 ... ... 7
*************** Beginning of data *************************************
0001.00 **==============================================================*
0004.00 FPF UF E K DISK
0004.01 F*
0004.02 C *LOVAL SETLLPF
0004.03 C READ PFR 90
0004.04 C *IN90 DOWEQ*OFF
0004.05 C FIELD IFEQ ''''U''''
0004.06 C MOVEL*BLANK FIELD
0004.07 C ENDIF
0004.08 C UPDATPFR
0004.09 C READ PFR 90
0004.10 C ENDDO
0004.11 C**
0120.00 C SETON LR
****************** End of data ****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel
F16=Repeat find F24=More keys
(C) COPYRIGHT IBM CORP. 1981, 2002.
首先,利用CRTSRCPF在LIB下创建QTXTSRC的SOURCE FILE。然后,创建类型为TXT的SOURCE MEMBER。 Columns . . . : 1 71 Browse R21EMS/QTXTSRC
SEU==> CLRZCPSTP
FMT ** ... ... 1 ... ... 2 ... ... 3 ... ... 4 ... ... 5 ... ... 6 ... ... 7
*************** Beginning of data *************************************
0001.00 UPDATE R21AFLB1/ZCPSTP SET ZGPSPR='''''''' WHERE ZGPSPR=''''U'''';
****************** End of data ****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel
F16=Repeat find F24=More keys
(C) COPYRIGHT IBM CORP. 1981, 2002.
最后,调用RUNSQLSTM命令,插入到CLP程序当时,实现更新字段内容。
Columns . . . : 1 71 Edit R21EMS/QCLSRC
SEU==> ZEIA1L0
FMT ** ... ... 1 ... ... 2 ... ... 3 ... ... 4 ... ... 5 ... ... 6 ... ... 7
0021.00 CLRPFM FILE(ZCPSTP)
0022.00
0026.00 CALL PGM(ZEIA2R)
0026.01
0026.02 /* CLEAR ZCPSTP WHERE ZGPSPR=''''U'''' TRF LIU ADD 05.12.30*/
0026.04 RUNSQLSTM SRCFILE(R21EMS/QTXTSRC) SRCMBR(CLRZCPSTP)
0026.05 COMMIT(*NONE)
0027.00 /* TRF LIU ADD END.*/
0027.01
0031.00 CPYF FROMFILE(ZCPSTP) TOFILE(ZCPSTB)
0032.00 MBROPT(*REPLACE) FMTOPT(*NOCHK)
0043.00
0044.00 END: ENDPGM
****************** End of data ****************************************
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F10=Cursor F11=Toggle
F16=Repeat find F17=Repeat change F24=More keys
△使用RUNSQLSTM需要注重事项:
(1). SQL语句的成员类型一定要指定为TXT;
(2). 每条语句要以分号“;”结束;
(3). 不支持Select语句;
(4). 假如不是使用事务处理,应该将COMMIT(*CHG)—>COMMIT(*NONE),否则执行RUNSQLSTM命令出错,而且会造成SQL语句失效。