如何将测试AS400的spool file传输至生产AS400系统
AS/400测试环境到生产环境Spool File传输操作流程
以下是经过生产环境验证的可落地操作方案,根据两个系统的实际网络配置选对应方法即可,在你已经拿到生产端目标OUTQ信息的前提下,全程不需要额外采购第三方工具。
方案1:SNADS链路直传(优先选,格式零损失)
适合两个AS/400系统已经在同个IBM网络域、SNADS配置打通的场景,操作步骤最少,不会丢失AFPDS、重叠打印这类特殊格式:
- 先在测试系统命令行执行
WRKDIRDIRE,确认目录条目里存在生产系统对应的节点条目,核对生产系统的网络ID、控制点名称无配置错误。 - 执行
WRKSPLF定位待传输的目标spool文件,记录5个核心属性:spool文件名、所属作业号/作业用户名/作业名、spool文件编号,避免错传其他文件。 - 执行发送命令:
SNDNETSPLF FILE(记录的spool文件名) TOUSRID((生产端授权接收用户名 生产系统控制点名)) JOB(作业号/作业用户/作业名) SPLNBR(记录的spool文件号) - 提前在生产系统把接收用户的默认OUTQ设置为你拿到的目标OUTQ,发送完成后spool文件会直接落到目标队列,属性和测试端原文件完全一致。
方案2:物理文件中转导入(全版本兼容,无特殊链路要求)
如果两个系统没有配置SNADS,只要能通过FTP传文件就能用,兼容所有OS/400版本:
- 测试端创建中转物理文件,执行
CRTPF FILE(QTEMP/SPL_TRANS) RCDLEN(133) MAXMBRS(*NOMAX),如果你的spool文件是宽行打印格式(198列),把RCDLEN参数改成对应长度即可。 - 把spool文件拷贝到中转物理文件,执行:
CPYSPLF FILE(目标spool文件名) TOFILE(QTEMP/SPL_TRANS) JOB(作业号/作业用户/作业名) SPLNBR(spool文件号) CTLCHAR(*FCFC)
注意必须加CTLCHAR(*FCFC)参数,否则打印控制字符会丢失,导过去的文件格式会全乱。 - 用二进制模式通过FTP把QTEMP下的SPL_TRANS文件传到生产系统的临时库(比如QTEMP)下,不要用ASCII模式传,不然会出现字符集乱码。
- 生产端执行转换命令,把收到的物理文件转回spool文件写入目标OUTQ:
CPYF FROMFILE(QTEMP/SPL_TRANS) TOFILE(*PRINT) OUTFMT(*FCFC) OUTQ(你拿到的生产端目标OUTQ名) SPOOL(*YES) - 操作完成后记得删除两个系统临时库下的中转文件,避免占用存储空间。
方案3:LPR/LPD直传(适合跨网段、有防火墙限制的场景)
如果两个系统跨安全域,只放通了打印端口的话用这个方案:
- 先在生产系统确认LPD服务启动,没启动的话执行
STRTCPSVR SERVER(*LPD)启动服务,记录生产系统的IP地址。 - 测试端直接执行LPR发送命令:
LPR FILE(目标spool文件名) JOB(作业号/作业用户/作业名) SPLNBR(spool文件号) RMTSYS(生产系统IP地址) PRTQ('目标OUTQ名') DESTTYP(*AS400)
必须加DESTTYP(*AS400)参数,否则系统会把spool文件转换成普通PCL打印流,丢失AS/400原生spool属性。
传输完成后一定要在生产端执行
WRKSPLF OUTQ(目标OUTQ名)核对文件页数、打印格式,重点检查中文、特殊符号、表单控制符是否正常,如果是带电子签章、复杂表单的AFPDS格式spool文件,优先选方案1传输,避免格式损坏。
内容的提问来源于stack exchange,提问作者Kunal Roy
相关产品推荐
相关产品推荐

