AS400中将固定格式的源码按逻辑重新显示(附加可编译执行源码)
AS400常用命令的使用
Replace or add records . . . . .*NONE*NONE, *ADD, *REPLACE...
Create file . . . . . . . . . .*NO*NO, *YES
Type options, press Enter.
4=End job 5=Work with job 8=Work with job locks
Opt Job User Lock Status
(There are no locks for the specified object)
Bottom
F3=Exit F5=Refresh F6=Work with member locks F12=Cancel
Starting sequence number . . .1.000.01-9999.99
Increment number . . . . . . .1.000.01-9999.99
Errors allowed . .*NOMAX
Compress out deleted records . .*YES*YES, *NO
Key value . . . . . . . . . .
+ for more values
Copy to record key:
Number of key fields . . . . .*NONENumber, *NONE, *BLDKEY
Key value . . . . . . . . . .
Member . . . . . . . . . . . .*ALLName, generic*, *ALL, *NONE
AS400基本操作及常用命令
AS400基本操作及常用命令AS400是一种基于IBM System i操作系统的中型计算机系统,广泛应用于企业和组织的日常业务和数据处理。
AS400基本操作和常用命令是使用AS400系统的关键知识点,下面将介绍AS400的基本操作及常用命令,帮助读者熟悉和掌握AS400系统的使用。
1.登录AS400系统:使用合法的用户名和密码登录AS400系统。
2.切换目录:使用CD命令切换目录,例如CDLIBRARY,切换到名为LIBRARY的目录。
3.显示当前目录:使用PWD命令显示当前目录的路径。
4.列出目录内容:使用LS命令列出当前目录下的文件和子目录。
5.创建目录:使用MKDIR命令创建新的目录,例如MKDIRNEWDIR,创建一个名为NEWDIR的目录。
6.删除目录:使用RMDIR命令删除指定的目录,例如RMDIROLDDIR,删除名为OLDDIR的目录。
7.复制文件:使用CPY命令复制文件,例如CPYFROMFILE(FROMLIB/FROMFILE)TOFILE(TOLIB/TOFILE),将FROMLIB/FROMFILE复制到TOLIB/TOFILE。
8.删除文件:使用DLTF命令删除指定的文件,例如DLTFLIBRARY/FILE,删除名为FILE的文件。
9.查看文件内容:使用DSPF命令查看文件的内容,例如DSPFLIBRARY/FILE,显示名为FILE的文件的内容。
1.WRKOBJ命令:用于显示系统中的对象列表,例如WRKOBJ*ALL/*ALL,显示所有对象的列表。
2.WRKLIB命令:用于显示系统中的库列表,例如WRKLIB*ALL,显示所有库的列表。
3.WRKUSRJOB命令:用于显示当前用户正在运行的作业列表。
5.WRKACTJOB命令:用于显示当前系统中正在运行的活动作业。
6.WRKSPLF命令:用于显示用户的输出队列中的作业列表。
7.CHGDTA命令:用于更改数据文件中的数据。
AS400 操作指南
AS/400 系统操作员指南广州通亿计算机科技有限公司2002年第二版目标了解 AS/400 基本结构 ---- ---- 硬件及操作系统组成掌握 AS/400 操作方法 ---- ---- 命令,菜单及在线帮助掌握 AS/400 基本维护方法1,了解 AS/400 故障类型2,掌握 SST 使用方法,检查系统状态3,会查找手册,了解问题性质4,了解手动开机步骤,并会操作目录第一章, AS/400 系统概述第二章, AS/400 基本操作第三章,手动开机介绍第四章, AS/400 故障分析介绍第五章,常有参考手册说明第一章 AS/400 系统概述一,IBM i系列简介未来发展Domino 专用处理器性能Domino 专用处理器工作范围二,基本概念完整的系统,集成了关系型数据库和网络功能等特性。
特点:1,易于使用2,系统无缝的成长和提高3,针对商业环境而做的侧重于输入--输出方面的优化设计系统层次化架构:图1 - AS/400 系统体系结构MI(机器接口)的功能:图2 – MI 功能面向对象的技术:提高系统和其数据的整体完整性用户无须考虑对象所要占用的空间,系统会自动分配提高系统的灵活性,代码再使用,编程的效率和降低出错率单层次的存储概念微处理器的簇形结构SOIO n-chip Copper-wiring 技术热插拔第二章 AS/400 基本操作一,面板操作二,系统启动和停止三,处理及报告系统问题四,常用系统维护方法及命令说明OS/400 命令组成方法缩写惯例:WRK DSP CHGDEV TAP CMN PRT DSK SYS PWR LOG CMD STS CFGMSG MSGQ OUTQ PRB QHST例如:WRKOUTQDSPMSGWRKSYSSTSDSPLOGOS/400 命令中常用的功能键F1 帮助及说明 ( 针对光标所在位置)F4 列出可能选项 ( 或称:参数),针对光标所在位置F5 刷新F10 显示附加选项PGDN 向下翻页PGUP 向上翻业用户及权限:QSYSOPR --------- 系统定义QSRV --------- 系统定义,为系统维护使用QSECOFR --------- 系统定义,为系统中最高权限重点介绍:1, WRKSYSSTS2, STRSST3,全系统备份4,清洗磁带机方法5,常有维护命令命令说明GO *ALL 出所有系统命令的菜单GO cmddsk 到硬盘命令菜单GO cmdhdw 到硬件命令菜单GO cmdpwr 到电源命令菜单GO cmdsys 到系统命令菜单GO SAVE 到备份菜单GO RESTORE 到恢复菜单GO main 到主菜单anzprb 分析一个新问题chgmsgq qsysopr *break 改变系统操作员信息为中断方式dltprb 删除问题日志中超过30天的记录dspjob 显示一个作业DSPJOBLOG 显示作业日志dsplog qhst 显示历史日志dspsysval 显示系统值endsbs 结束子系统inztap 格式化磁带pwrdwnsys *immed 关系统电源savsys 保存系统signoff 退出用户STRSST 启动系统维护工具vfycmn 显示通讯确认屏幕vfyprt 确认打印机是否正常vfytap 确认磁带机或光盘机状态vfycfg 确认配置 ( 如设备,I/O 处理器或通讯线是开还是关断 ) WRKCFGSTS 显示所有 I/O 处理器的状态wrkdevd 处理所有设备描述wrkoutq 处理输出队列wrkprb 显示问题日志wrkhdwprd 显示硬件产品wrkhdwrsc 显示资源名WRKSYSSTS 显示系统状态第三章手动开机介绍1,系统面板上选择手动方式2,如果系统还没有上电,按面板上的电源开关3,开主控台4,一切正常后,主控台会显示如下画面:IPL or Install the SystemSelect one of the following1. Perform an IPL2. Install the operating system3. Use Dedicated Service Tools ( DST )4. Perform automatic installation of the operating systemSelection__5,键入 “ 1 ,按执行键”6,系统会出现如下画面,需要人为介入:A,Display Messages按 F12 键B, Sign On以 QSECOFR 注册C, Select Products to Work with PTFs按 F12 键D, IPL Options输入系统日期和系统时间E, Display Messages按 F12 键7,出现主菜单后,若要恢复常规状态,采取以下步骤:A,在系统面板上,将手动改为常规方式B,键入命令:pwrdwnsys *immed restart(*yes)第四章 AS/400 故障分析介绍一,故障分析包括:1,故障的确定确定是软件还是硬件故障2,故障的隔离找出故障的原因二,正确的故障分析,需注意以下几点:1,准确的描述故障及其表现特征2,确认它是否为一个新问题还是已发生过3,通过以上步骤,确定所须的正确的信息4,收集信息5,确定要解决故障须联络的人三,通常须收集的信息:1,QHST 中相关时间段的打印输出2,错误日志 ( ERROR LOG )STRSST3,系统硬件配置WRKHDWPRD4,相关时间段的 QSYSOPR 的信息DSPMSG QSYSOPR5,问题发生的日期和时间四,系统故障的外部表征:stops --------- 死机1,Hard2, Incorrect optput --------- 不正确的输出3,Job--------- 作业循环loops--------- 作业等待waits4,Jobloop--------- 系统循环5,Systems6, Systems wait -------- 系统等待7,Messages--------- 信息8,OSproblem --------- 操作系统问题9, VLIC problem --------- 微码问题10,Communication problem --------- 通讯问题11,IPLproblems --------- IPL问题--------- 工作站死锁12,Woekstationlocksstops --------- 死机1,Hard* 系统注意( Attention ) 黄灯亮,并有代码显示在面板上* 工作站键盘不能输入* DST 画面出不来,功能选择项 21 不工作--------- 不正确的输出optput2,Incorrect* 系统继续运行,作业正常结束,但后来发现输出不对* 问题通常可再现* 一些不该发生的事发生了* 一些该发生的事没有发生3,Messages --------- 信息* job log ( 作业日志 )* qsysopr 的 MSGQ ( 信息队列 )* qhst ( 历史记录 )4,Hang --------- 挂起* 系统挂起”特征象 “ 死机,但没有代码显示* 作业挂起WRKACTJOB,作业没有消耗任何系统资源5,Loops --------- 循环* 系统循环> 处理器活动率灯显示 100%> 所有工作都停下来* 作业循环> 处理器活动率灯显示 100%> 系统性能下降> 作业没有在预期的时间内结束> 其他作业继续运行,但速度显得非常慢6,Communicationproblem --------- 通讯问题* 线路( LINE ),控制器( CTL )或设备( DEV ) 不正常problem --------- 性能问题7,Performance* 有关性能的系统命令> WRKSYSSTS> WRKDSKSTS> WRKACTJOB8,Workstationlocks --------- 工作站死锁* 15 次以上在同一台设备以同样的用户帐号注册失败第五章常有参考手册说明《 9406 270 Problem Analysis 》《 AS/400 Service Fuction 》。
AS400基本操作及常用命令
AS400基本操作及常用命令AS400是一种基于IBM Power Systems技术的计算机系统,广泛应用于企业级商业计算和数据处理。
AS400的操作和管理需要掌握一些基本的操作和常用命令。
本文将介绍AS400的基本操作和常用命令,帮助用户更好地使用AS400系统。
1.登录AS400系统:在登录界面输入用户名和密码,按下回车键即可登录AS400系统。
2.退出AS400系统:在AS400系统的命令行界面,输入“LOGOFF”或“ENDSBSQCTL”,按下回车键即可退出AS400系统。
3.帮助命令:输入“?”或“HELP”可以查看AS400系统的帮助文档,了解AS400系统的各种命令和功能。
4.显示当前工作目录:输入“PWD”可以显示当前工作目录的路径。
5.切换工作目录:输入“CD目录路径”可以切换到指定的目录路径下。
6.显示目录内容:输入“LS”可以显示当前目录的内容。
7.创建目录:输入“MKDIR目录名”可以创建一个新的目录。
8.删除目录:输入“RMDIR目录名”可以删除指定的目录。
9.复制文件:输入“CP源文件目标文件”可以将源文件复制到目标文件。
10.移动文件:输入“MV源文件目标文件”可以将源文件移动到目标文件。
11.删除文件:输入“RM文件名”可以删除指定的文件。
12.显示文件内容:输入“CAT文件名”可以显示指定文件的内容。
13.创建文件:输入“TOUCH文件名”可以创建一个新的文件。
15.复制对象:输入“CPYOBJOBJ(对象名)FROMLIB(源库)OBJTYPE(对象类型)TOLIB(目标库)”可以将一个对象从源库复制到目标库。
16.删除对象:输入“DLTOBJOBJ(对象名)OBJTYPE(对象类型)LIB(所在库)”可以删除指定的对象。
17.显示对象:输入“DSPOBJDOBJ(对象名)OBJTYPE(对象类型)LIB(所在库)”可以显示指定对象的详细信息。
18.显示库:输入“DSPLIBLIB(库名)”可以显示指定库的详细信息。
AS400培训资料(下)
AS400培训资料(下)AS400应用开发培训高级应用与交易实现前言本阶段的培训,在上一级培训的基础上,讲解业务系统的处理以及交易的实现。
目的是使大家掌握如何在AS400上实现具体的交易,完成本次开发任务。
在讲解业务系统的例子程序和会计记帐核心的过程中我们将穿插讲解AS400中一些编程方式和一些简单工具的使用。
由于篇幅和时间的关系在本教材中对一些简单工具不作具体的介绍,请大家作好记录。
同时为了配合本次培训,我们将下发两本教材,一本是操作码手册,另外一本是本公司原来出的IBM AS400 培训教材第二分册,对这两本教材的内容我们可能不作具体的讲解,主要是给大家在学有余力的情况下进行自学,以及今后进行实际编码时的参考手册。
对于一些非常少见的应用,我们不作讲解,请大家参考下发的教材或使用联机的帮助。
使用F6或其他方式建立的成员在Opt选14编译物理文件参与编译其他类型的目标(Object) SLRRPG(可执行程序 *PGM) 物理文件,逻辑文件,打印文件等参与编译,若RPG程序的F表进行了相应的定义其他需要参与编译的目标第一章 RPG程序使用RLU的方法在上一期的培训中我们简要的介绍了RLU的一些用法,现在我们来学习RLU的一些应用,以及如何在RPG程序中使用RLU生成的打印文件在今后的设计过程中,应业务人员的要求,在报表中对于一些域的属性可能要进行修改。
以下是将光标移到域后出现的域属性内容Work with Field KeywordsField . . . . . . . . : ' 客户 ... Record format . . . . : HEADType options, press Enter.2=Specify 4=RemoveOpt Keyword Opt Keyword Opt KeywordALIAS EDTCDE MSGCONBARCODE EDTWRD PAGNBRBLKFOLD FLTFIXDEC PRTQLTYCDEFNT FLTPCN REFFLDCHRID FNTCHRSET SKIPACHRSIZ FONT SKIPBCOLOR HIGHLIGHT SPACEACPI IGCALTTYP > SPACEBCVTDTA IGCANKCNV TEXTDATE IGCCDEFNT TIME> DFT IGCCHRRTT TRNSPYDLTEDT INDTXT UNDERLINEBottomF3=Exit F5=Refresh F9=Input keyword parameters F10=Specify informationF12=Cancel F16=Remove all keywords选择(opt)2 进行该项的内容说明 4 是取消该项说明在这些选项中经常用到的是:DFT 若前面有”>”则说明该项是常量域,否则是变量域。
AS400简明操作手册
AS/400简明操作手册一、认识IPL1.IPL设置面板设置为:01 B N V=F其中:第一部分表示目前状态,01表示显示状态、02表示改动状态第二部分B表示打过补丁、D表示安装操作系统第三部分N表示自动启动、M表示手动启动第四部分V=F表示快速启动,S代表慢速启动(为了在启动时对系统部件进行全面检测)注:面板LED灯(绿灯闪烁)表示已经关机。
开机状态下LED灯(绿灯长亮)。
2.控制面板操作:在正常启动状态时:01 B N V=F在手动起机状态时:01 B M V=F在安装操作系统时:01 D M V=F (光盘启动)注:在手动状态下进入操作系统后,严禁触按电源开关,如违反操作造成损失,后果自负。
注:不建议平时使用控制面板关机。
这种强制性关机有可能会造成系统及用户的数据丢失。
再次开机时,系统将花费额外的时间来检查这些数据是否受损。
启动系统启动前确认系统控制面板上显示的启动参数是否为你需要的参数。
如果不需要人为干预的启动,请选择N自动启动状态。
(一般设为N)。
二、安装CLIENT ACCESS EXPRESS首先连线,将0367的一端接在AS/400DSD背面板上,另一端接在一台PC 的COM口上。
将随机附带的光盘放入PC的CD-ROM中,在出现安装界面后按下一步,选择全部安装。
安装虚拟Modem,进入控制面板,选择添加硬件设备,不检测设备而手工添加,选择调制解调器,从软盘安装,选择浏览,找到刚才安装Client Access 的目录\IBM\Client Access\Aoc\Inf,发现有一驱动文件,选中后按确定,安装完成。
重新启动计算机。
点击开始-程序-IBM AS/400 CLIENT ACCESS EXPRESS-AS/400操作控制台,填入AS/400名称,设置为直接连接、仅控制台连接、不允许远程PC连接。
完成后将出现一窗口显示正在连接,过几十秒将出现一会话窗口,连接成功。
如果发现连接不成功,请换一台PC重试,直到连接成功。
AS400基本操作及常用命令
AS400基本操作及常用命令1 AS/400基本操作基本操作基本操作基本操作1.1AS/400系统提供一些不同的显示屏幕作为其用户接口的一部分。
组成用户接口的显示屏幕类型有:菜单(MENU)输入(ENTRY)列表(LIST)帮助(HELP)字段层次帮助:是有关屏幕上提示的信息。
将光标移动到特定的提示或其输入字段中,按帮助健F1,用户就可以找到与该特定字段的信息。
让用户迅速找到解决问题的答案,而不需要查阅操作手册。
扩展帮助:通常提供有关任务的所有提示,以及功能健提供之功能的信息。
通过扩展帮助,用户可以翻页查阅所有与屏幕有关的标题。
索引搜索:可以让用户进一步请求可能与当前显示屏幕有关的信息。
一般用于AS/400在线书库的查询。
在主菜单下,菜单选项下,1.2 命令命令的名称通常是一个动作或动词,加上识别动作接收者的名词或短语组大部分CL命令都有一或多个参数,用来指定用于运行命令的目标和值1.2.2命令提示操作系统提供的或用户建立的任何命令的交互式命令提示。
用户只要健入命令名称,再按功能健(F4=提示)就能察看该命令的提示显示屏幕。
提示显示屏幕提供所需或常用的列表。
提示显示屏幕能显示可能的值或关键字名称的列表。
可使用功能减灾两个显示屏幕任选项间交换1.3 信息SNDMSG,QSYSOPR2 AS/400常用命令在命令行输入在菜单画面选择在 work with 菜单中,option 选项在 CL 程序中执行远程调用2.2 CL 命令的分类每条命令由命令名和一系列参数组成例如: SNDMSG MSG (HOLLEO) TOUSR (LENG)大多数 CL 都是针对目标而言目标的类型很多,常用的几种包括:LIB 库FILE 文件MSGF 信息文件PGM 程序CMD 命令 JOBQ 作业队列 DTAQ 数据队列 MSGQ 信息队列OUTQ 输出队列DTAARA 数据域JRN 日志JRNRCV 日志接受器 USRPRF 用户简要表 SBSD 子系统描述JOBD 作业描述LIND 线路描述CTLD 控制器描述DEVD 设备描述关于目标的操作,系统也进行了统一的规范,常用的几种包括:WRK 工作CRT 建立ADD 增加CHG 改变DLT 删除 DSP 显示 EDT 编辑 CPY 拷贝 MOV 移动 RNM 变名 SAV 备份 RST 恢复 RTV 获取GRT 授权 DMP 转储2.3 系统菜单: go 菜单名2.4 基本操作命令汇编信息当前信息命令:DSPMSG系统信息命令:DSPMSG QSYSOPR提供关于系统操作的信息,如通讯线、设备出错信息的提示及建议解决方法等设备控制线描述命令:WRKLIND控制器描述命令:WRKCTLD控制设备描述命令:WRKDEVD配置设备状态命令:WRKCFGSTS提交作业提交批处理作业命令:SBMJOB + F4处理作业激活作业显示命令: WRKACTJOB输出输出作业队列命令:WRKOUTQ假脱机文件命令:WRKSPLF打印机菜单命令:GO PRINTER WRKDEVD PRT01子系统作业运行的环境命令:WRKSBSWRKSBSD *ALLWRKACTJOBSTRSBS QCTL日志信息作业日志命令:DSPJOBLOG F10=Display detailed messages 系统历史日志命令:DSPLOG +F4应用日志命令:WRKJRNCHGJRN问题处理故障分析命令:WRKPRB用户描述文件命令:WRKUSRPRF *ALL CHGUSRPRF USR1 +F4系统状态检查命令:WRKSYSSTS WRKACTJOB WRKCFGSTS备份和恢复备份库命令:SAVLIB备份目标命令:SAVOBJ恢复库命令:RSTLIB恢复目标命令:RSTOBJ磁带操作初始化命令:INZTAP检查磁带内容命令:DSPTAP系统操作命令宕机命令:PWRDWNSYS + F42.4.1 CALL 在命令行方式下是执行程序;在程序方式中是调用内部或外部程序。
AS400编码规范文档
1.命名规则1.1.源文件库的命名根据系统简称对源文件库进行命名,格式:XXXSRCLIBXXX:系统代码简称,英文字母表示;1.2.目标库的命名根据系统简称对目标库的进行命名,格式:XXXOBJLIBXXX:系统代码简称,英文字母表示,跟源文件库的系统代码XXX一致。
1.3.文件的命名1.3.1.源文件在AS/400上所编写的Member大致可分为:RPG程序(Report Program Generator)、CL程序Command Language)、物理文件(Physical File)、逻辑文件(Logical File)、显示文件(Display File)、打印文件(Printer File),分类将这些Member放置在不同的源物理文件(Source Physical File)下,方便管理和查找。
根据Member的类型对源文件进行命名,格式:YYYBBBSRCYYY:项目功能模块代码简称,英文字母表示;BBB:源文件Member类型。
例如:YYYRPGSRC:存放RPGLE、RPG源程序;YYYDDSSRC:存放PF、LF、DSPF、PRTF源程序;YYYCLSRC:存放CLP、CLLE源程序。
1.3.2.源文件成员在同一个项目开发过程中,新建立的物理文件、逻辑文件、显示文件、打印文件、程序的源文件成员名开头字符应一致,根据项目代码来定义,这样比较有利于统计,备份及移植工作。
所有成员必须加于描述说明(Text),以便了解其用途或功能。
对于成员的修改,要进行版本控制。
1.根据文件或程序功能对源文件成员进行命名,格式:YYYUUUUZ9BAYYY:表示项目功能代码简称,英文字母表示;UUUU:尽量采用能表达出功能或用途的英文缩写,物理文件和逻辑文件为3位,其他最多为4位;Z:Member类型描述;R:RPGLE程序C:CL程序P:物理文件L:逻辑文件D:显示文件S:打印文件9:顺序号(1-9),只有逻辑文件定义且按顺序取。
AS400基本操作技巧及其通用命令
目录未找到目录项。
1AS/400基本操作AS/400用户接口满足各种用户的需求,无论他们是新用户、数据管理人员、系统管理员、或程序员。
用户可以灵活的使用OS/400提供的多种方法,对系统进行操作。
如果用户并不了解显示屏幕或如何启动任务,通过AS/400帮助功能,在任何屏幕上都可使用帮助。
帮助的信息包括整个屏幕的信息到现实屏幕上个别项目的信息。
AS/400系统还提供相应国家语言,支持用户以其所在国家的语言作为与系统的接口。
1.1屏幕显示AS/400系统提供一些不同的显示屏幕作为其用户接口的一部分。
组成用户接口的显示屏幕类型有:菜单(MENU)输入(ENTRY)列表(LIST)帮助(HELP)登录画面用于用户注册:使用用户名和口令Sign OnSystem . . . . . :S101766GSubsystem . . . . :QINTERDisplay . . . . . :PC5250User . . . . . . . . . . . . . . USERPassword . . . . . . . . . . . .USERProgram/procedure . . . . . . . .Menu . . . . . . . . . . . . . .Current library . . . . . . . . .进入系统后,首先会看到的显示屏幕就是菜单1.1.1菜单用户可以使用菜单选择他们想执行的任务,而不需使用系统命令,如图:MAIN AS/400 Main Menu菜单名System:S101766G Select one of the following:1. User tasks2. Office tasks3. General system tasks4. Files, libraries, and folders 菜单选项5. Programming6. Communications7. Define or change the system8. Problem handling9. Display a menu90. Sign offSelection or command===> 命令行F3=Exit F4=Prompt F9=Retrieve F12=Cancel F13=Information AssistantF23=Set initial menu 功能键提示Type option number or command. 状态条使用菜单之间的导航器,可以不用知道系统命令,也可以完成相应的操作。
AS400学习篇(二)
AS400学习篇(二)
AS400操作命令:
操作含义
一、显示AS/400的磁盘容量和使用状况命令DSPSYSSTS 显示系统状态
二、显示用户简要表命令
DSPUSRPRF 查看用户情况
WRKUSRPRF 操作用户简要表
CRTUSRPRF 创建新用户
三、关机操作命令
GO POWER 关机
选择3、F16 直接关机
选择4、F16 关闭后重新启动
PWRDWNSYS *IMMED 立即关机
四、查找命令
GO CMD*** 查找命令
五、系统操作命令
shift +E sc+enter 使用系统请求菜单
call qcmd 使用命令显示行(显示先前使用过的命令)go assist 使用系统助手
go info 使用信息助手
六、查看信息命令
DSPMSG 当前信息
DSPMSG QSYSOPR 系统信息
七、控制操作命令
WRKLIND 控制线描述
WRKCTLD 控制器描述
WRKDEVD 控制设备描述WRKCFGSTS 配置设备状态
八、作业操作命令
SBMJOB + F4 提交批处理作业WRKACTJOB 激活显示作业
九、输出操作命令
WRKOUTQ 输出作业队列WRKSPLF 假脱机文件
十、打印机
GO PRINTER WRKDEVD PRT01 菜单
十一、备份和恢复:
RSTLIB 恢复库
RSTOBJ 恢复目标
SAVOBJ 备份目标
SAVLIB 备份库。
AS400 基本命令和操作
数据描述规范DDS通过文件的记录字段仅一次的说明,可定义多种访问路径,多个程序使用。
结构化查询语言SQL/400组成:(1)SQL运行支持程序(2)SQL预编译程序(3)SQL交互式接口(4)DB2 QUERY MANAGER FOR AS/400,提供菜单、填空式提示的交互式接口,允许建立、增加、维护数据,和运行报表PDM(PROGRAMMING DEVELOPMENT MANAGER)处理源代码、对象和库SEU(SOURCE ENTRY UTILITY)建立和编辑源文件成员STRSEUSDA(SCREEN DESIGN AID)交互式设计、创建和维护应用屏幕RLU(REPORT LAYOUT UTILITY)交互式定义打印报表的格式分布DFU(DATA FILE UTILITY)快速定义、创建面向数据录入、查询或文件维护STRDFUQUERY/400获取外部描述数据库文件信息STRQRYCL(CONTROL LANGUAGE)调用AS/400的所有系统功能。
简化操作,控制工作流程,设置作业运行环境等AS/400三级存储结构库(LIBRARY)——数据库文件(FILE)——成员(MEMBER)一级目录——二级目录——三级目录字段是用来描述某一属性的一组值;字段定义是对字段属性的说明记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。
物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。
CRTPF逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。
as400手册
1 简单说明 (3)2 程序代码行的编写 (3)2.1 最简单的RPGLE程序 (3)2.2 举例准备 (3)2.3 简单的程序流程 (4)2.4 常见的程序流程 (5)2.5 F行说明 (5)2.5.1 内容说明 (5)2.5.2 常用例子 (9)2.5.3 补充说明 (10)2.6 D行说明 (10)2.6.1 内容说明 (10)2.6.2 常用例子 (13)2.6.3 补充说明 (14)2.7 入口参数 (14)2.8 C行说明 (16)2.8.1 写在前面 (16)2.8.2 内容说明 (17)2.8.3 ILE操作码分类: (18)2.8.4 ILE操作码 (19)2.8.4.1 A--C (19)2.8.4.2 D--E (27)2.8.4.3 F--N (32)2.8.4.4 O--R (39)2.8.4.5 S--Z (43)3 和程序相关的数据库知识 (49)3.1 LF(逻辑文件) (49)3.1.1 逻辑文件概念 (49)3.1.2 有关编译的问题............................................................. 错误!未定义书签。
3.1.3 逻辑文件对效率的影响 (51)3.2 MEMBER (51)3.3 游标 (52)3.3.1 游标的概念 (52)3.3.2 不同操作码对应的游标的处理 (52)3.3.3 “有且仅有”的游标 (53)3.3.4 LOV AL、HIV AL对应的游标操作 (53)3.4 事务处理-- COMMIT (54)3.4.1 概念描述 (54)3.4.2 使用方法 (54)3.4.3 注意事项 (55)3.5 关于锁表的问题LCKW (56)4 DEBUG调试以及常见出错信息 (56)4.1 写在前面 (56)4.2 常规用法 (57)4.2.1 程序编译 (57)4.2.2 执行DEBUG命令 (57)4.2.3 运行程序 (57)4.2.4 在DEBUG模式中进行调试 (58)4.2.5 跟踪被当前程序调用的程序 (58)4.2.6 一定要退出DEBUG模式 (59)4.2.7 补充 (59)4.3 跟踪批处理程序( From qingzhou) (60)4.4 常见的出错信息 (60)4.4.1 编译程序时的出错信息 (60)4.4.2 运行时的出错信息 (62)5 CL、CMD (62)5.1 CL程序 (62)5.1.1 基本认识 (62)5.1.2 CL程序的常用语法及命令: (63)5.1.3 不常用的语法 (65)5.2 CMD (66)6 屏幕文件及使用 (67)7 其它 (67)7.1 报表打印 (72)7.2 SA VF,备份与恢复 (77)7.3 菜单--MENU (78)7.4 开发时常用的命令 (78)7.5 一点想法 (81)1简单说明内部交流、或可作培训使用。
as400常用操作
AS400常用操作手册1、关于表的操作1.1、数据库表的拷贝wrkobj: 输入要查找的目标、库,执行。
(wrkobj obj(gjjtemp/czyb) 在目标窗口输入3,执行,修改要拷贝到的目标库,同时Duplicate data 选YES,执行。
然后使用grtobjaut进行赋权。
Grtobjant 执行,输入object、lib、object type(all)、users(要赋权者)、authority(*all)。
Grtobjaut obj(gjgrdta/czfzb) objtype(*all) user(gjgr) aut(*all)注意:如目标在要拷贝到的库中存在,则不能覆盖,必须先删除。
1.2、如何在400上修改某条记录UPDDTA: 输入逻辑文件名,则可以按照逻辑文件键字检索记录,然后修改。
如输入物理文件名,则检索出所有记录,不能定位到某条记录,只能一条一条翻阅到要修改记录,然后修改,此时如果记录很多,太不方便。
1.3、为表添加日志STRJRNPF FILE(GJDWDTA/LBJQCB)JRN(GJDWDTA/GJJJRN) IMAGES(*BOTH)1.4、去掉表的日志(ENDJRNPF)Journaled physical file . . . . > *ALL Name, *ALLLibrary . . . . . . . . . . . Name, *LIBL, *CURLIB+ for more valuesJournal . . . . . . . . . . . . > GJJJRN Name, *FILELibrary . . . . . . . . . . . > GJGRDTA Name, *LIBL, *CURLIB 1.5、清空表数据CLRPFMclrpfm GJDWDTA/ltqsjb1.6、如何在两台服务器之间传递数据例如将810机器上的gjgrdta库中sbgqcb中的数据传送到270机器上的gjdwdta库中的sbgqcb中:在810机器上执行如下操作:1)CHGDDMF-> F4:DDM FILE 项填写:TESTDDMLIBRARY填写:QGPLRemote file:File 处填写SBGQCBLibrary填写GJDWDTA执行2)CPYF->F4:From file 处填写SBGQCBLibrary处填写GJGRDTATo file 处填写TESTDDMLibrary 处填写QGPLReplace or add records 处填写*ADD执行。
AS400仿真打印设置方法(PCOMM)(参考模板)
AS400仿真打印设置方法(PCOMM)
1、打开PCOMM软件
点击新建会话
设定主机类型为iSeries
打开链路参数窗口
设定主机IP地址
确定返回
2、设置打印机
打开会话参数
设定会话类型,主机代码页和工作站标识如下:
设置打印机高级参数如下图:
确定返回
3、启动打印机
打印机会话即启动如下:(打印机即PC电脑上默认打印机)
4、查看打印队列和打印机状态
登录AS400,执行命令wrkoutq
红框内即为仿真打印机会话创建的打印队列和关联打印机
5、输出报表至打印机
找一个有报表文件的队列
找一文件,进行修改
修改打印机为自己打印机,执行即输出到PC端默认打印机。
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!)。
AS400平台程序传送操作说明
AS400平台程序传送操作说明一、开发、测试环境下的程序传送开发、测试环境下的程序传送可分为:来源环境的数据打包,来源环境的数据包发送,目的环境的数据包接收,目的环境的数据解包。
如果需要经过中间节点机进行过渡,节点机的操作只进行数据包接收和数据包发送(如目前的S0116)。
1、数据打包(LANSA的EXPORT,非LANSA 的SA VOBJ)●在QGPL库下建立一个(多个)长期使用的SAVF(CRTSAVF 文件名);命令:CRTSA VF FILE(QGPL/SA VF名) TEXT(注释内容)如果已建有SA VF,此步可略LANSA的处理:如果带有文件传送,需先进行文件的处理:更新BANK#DA TA的文件格式。
先删除BANK#DA TA中的LF和PF(先删LF再删PF和DATAARA),再把文件的格式和数据从BK#101000或BANK#TBLD拷贝到BANK#DA TA,先拷贝PF再拷贝LF、DA TAARA(CRTDUPOBJ OBJ(目标名) FROMLIB(BANK#DA TA) OBJTYPE(*FILE) TOLIB(BK#101000)DATA(*YES));打包步骤:●进入Housekeeping Menu●进入Work with lists of objects to be exported●新建或选取一个LIST:1=Create(或5=Review)如果新建LIST 必须再选13= Define substitution variables used in list ,将其中的‘Substitution value / Default value Prompt text to display if prompting required ’填写为‘BANK#DA TA ’,‘Prompt user When importing’填写为‘N ’。
●如果使用已有LIST,则需清空LIST:12=Review/delete objects already in list●在LIST中输入需传送的字段:1=Add fields to list 并选择在LIST中输入需传送的文件:2=Add files to list 并选择。
AS400服务程序笔记
AS400服务程序笔记Service program一基本概念:Service program是由module和其他Service program组成的,在系统中用*SRVPGM来表示(好像是废话- -!),其包含了很多可被其他程序调用的procedure。
Service program是用by reference方式绑定,功能类似于其他语言的函数库,提供了很多procedure供其他ILE program调用。
Service program中哪些procedure可以被其他program调用,哪些不可以呢?这就牵扯到了Service program中一个非常重要的概念:public interface。
二公共接口(public interface)Service program的public interface规定了哪些procedure和data item可以被外界使用,哪些不可。
如果public interface设置的不合理,很容易产生program与Service program不兼容的问题,导致程序发生异常。
那么如何定义Service program的public interface 呢,如下:CRTSRVPGM命令的EXPROT参数规定了Service program如何对外提供接口,并提供2个参数值:1 EXPORT (*ALL)。
选择*all的话,那么Service program里所有使用key word:EXPORT修饰的procedure和data item都可以被外界程序使用。
2 EXPROT(*SRCFILE)。
*SRCFILE是默认的参数值。
使用*SRCFILE的话,可以使用binder language (BND文件)来自定义public interface,自己选择哪些procedure和data item可以被外界使用(这些 procedure、data item也必须使用key word:EXPROT 修饰)。
AS400中将固定格式的源码按逻辑重新显示(附加可编译执行源码)
AS400中画出固定格式源码的逻辑对于使用固定格式的RPG源码,我们在查看时,如果对于行数比较少的代码来说可能逻辑能很简单的就理出来,但对于代码行数较多(比如1000行,甚至更多时),逻辑就不那么容易能看出来,所以针对这一问题,我们可以将源代码进行重写,使用符号(’+’ , ’|’)连线画出它的逻辑,这样对快速了解源代码的功能有很大的帮助。
以下是我写的比较粗陋的代码,其中源码SCANFC为CLLE程序,主要是控制生成重写的文件的位置以及复制源码和调用格式转换程序等动作;源码SCANS01为自由格式的RPGLE,主要是将复制后的源码按逻辑进行连线等等更新操作;源码SCN为CMD菜单,编译完成后我们可以通过在命令行输入SCN调起源码转换浏览程序。
当然如果熟悉option file的同学也可以直接在option里面加入简单的option,这样在使用过程中就能更方便的进行使用了,我设置的是SF。
图1.转换前的格式(比较懒,只是为了测试,所以只写了操作码,方便大家理解功能)图2.转换后的格式(比较懒,只是为了测试,所以只写了操作码,方便大家理解功能)源码SCANFC:PGM PARM(&SRCL &SRCF &SRCM)DCL VAR(&SRCL) TYPE(*CHAR) LEN(10)DCL VAR(&SRCF) TYPE(*CHAR) LEN(10)DCL VAR(&SRCM) TYPE(*CHAR) LEN(10)MONMSG MSGID(CPF0000) EXEC(GOTO ENDPGM)DLTF FILE(TEMPSRCF)/*跳过文件不存在错误*/MONMSG MSGID(CPF2105)/*创建接收重写的源文件*/CRTSRCPF FILE(QTEMP/TEMPSRCF) RCDLEN(132) IGCDTA(*YES)/*将要重写的源码复制到临时库的临时文件里*/CPYF FROMFILE(&SRCL/&SRCF) TOFILE(QTEMP/TEMPSRCF) +FROMMBR(&SRCM) TOMBR(&SRCM) MBROPT(*REPLACE) CRTFILE(*YES) +FMTOPT(*MAP *DROP)/*调用源码转换程序生成逻辑连线*/CALL PGM(SCANS01)/*显示重写的源码*/STRSEU SRCFILE(QTEMP/TEMPSRCF) SRCMBR(&SRCM) OPTION(5)ENDPGM:ENDPGM源码SCANS01:FTEMPSRCF UF E K DISKF RENAME(TEMPSRCF:TEMPSRC)*DSCNT S 4P 0DSCNT1 S 4P 0DSCNT2 S 4P 0DSCNT3 S 4P 0DT_SRCDTA S LIKE(SRCDTA)DLOW C CONST('abcdefghijklmnopqrstuvwxyz')DUP C CONST('ABCDEFGHIJKLMNOPQRSTUVWXYZ')D*颜色常量,X'38':紫色,这个可以自定义DCC_PUR C CONST(X'38')*/FREE//=主过程=============================================================== Read TEMPSRC;Dow not %eof;//如果为空行继续处理下一行If %Subst(SRCDTA:6:1) = ' ' And %Subst(SRCDTA:7:1) = ' ';Read TEMPSRC;Iter;EndIf;//每处理一行之前将该行的小写字母全部转换为大写T_SRCDTA = %Xlate(Low:Up:SRCDTA);//如果为自由格式的则直接退出If %Subst(T_SRCDTA:7:5) = '/FREE';Exsr EXIT;EndIf;//为C表,且不为注释行,进行转换处理If %Subst(T_SRCDTA:6:1) = 'C' And %Subst(T_SRCDTA:7:1) <> '*';// 如果为IF,DO,SELECT,FOR,If %Subst(T_SRCDTA:26:2) = 'IF' OR %SUBST(T_SRCDTA:26:2) = 'DO' OR %Subst(T_SRCDTA:26:3) = 'FOR' OR %Subst(T_SRCDTA:26:6) ='SELECT';Exsr STRD;// 如果为END*ElseIf %Subst(T_SRCDTA:26:5) = 'ENDDO' OR%Subst(T_SRCDTA:26:5) = 'ENDIF' OR%Subst(T_SRCDTA:26:5) = 'ENDSL' OR%Subst(T_SRCDTA:26:6) = 'ENDFOR';Exsr ENDD;// 如果为ELSE,WHENElseIf %Subst(T_SRCDTA:26:4) = 'ELSE' OR %Subst(T_SRCDTA:26:4)= 'WHEN';//注意由于此处调用的为处理IF,DO,SELECT,FOR类操作码子过程,但位置//并不需要加1,所以先减1后再调用SCNT = SCNT - 1;Exsr STRD;// 如果为其他Else;Exsr MIDD;EndIf;EndIf;//如果为注释行,则上色,紫色:X'38'If %Subst(T_SRCDTA:7:1) = '*';%Subst(SRCDTA:6:1) = CC_PUR;Update TEMPSRC;EndIf;Read TEMPSRC;EndDo;Exsr exit;//主过程结束====================================================//处理操作码为IF,DO,FOR,SELECT等行子过程Begsr STRD;SCNT = SCNT + 1;SCNT1 = 1 ;DoW SCNT1 <= SCNT;If SCNT = SCNT1;SRCDTA = %Trimr(%Replace('+':SRCDTA:25+SCNT:0));SCNT1 = SCNT1 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT1:0));SCNT1 = SCNT1 + 1;Endif;EndDo;Update TEMPSRC;EndSR;//处理操作码为ENDIF,ENDDO,ENDFOR,ENDSL等行子过程Begsr ENDD;SCNT2 = 1;DoW SCNT2 <= SCNT;If SCNT2 = SCNT;SRCDTA = %Trimr(%Replace('+':SRCDTA:25+SCNT2:0));SCNT2 = SCNT2 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT2:0));SCNT2 = SCNT2 + 1;Endif;EndDo;SCNT = SCNT - 1;Update TEMPSRC;EndSR;//处理其他操作码等行子过程Begsr MIDD;SCNT3 = 1 ;DoW SCNT3 <= SCNT+1;If SCNT3 = SCNT+1;SRCDTA = %Trimr(%Replace(' ':SRCDTA:25+SCNT3:0));SCNT3 = SCNT3 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT3:0));SCNT3 = SCNT3 + 1;Endif;EndDo;Update TEMPSRC;Endsr;//程序结束子过程Begsr EXIT;*INLR = *ON;Return;Endsr;源码SCN:CMD PROMPT('Scan Member Source By Change')PARM KWD(SRCL) TYPE(*CHAR) LEN(10) PROMPT('Source +Library')PARM KWD(SRCF) TYPE(*CHAR) LEN(10) PROMPT(' +Source File')PARM KWD(SRCM) TYPE(*CHAR) LEN(10) PROMPT('Source +Member')注意:如果源码的逻辑本身就有问题,连线可能会出现问题,比如,错位,不连续等等。
RPG AS400程序员培训手册9
RPG AS400程序员培训手册98.1 报表打印在那个地点,简单说一下报表。
事实上据说RPG 设计之初,要紧确实是为了解决报表问题。
不过进展到现在,在我接触过的系统中,觉得报表在RPG 编程之中反而退居其次,大部分程序差不多上对数据库中磁盘文件〔即PF 文件〕的操作。
报表文件事实上在某种意义上与一般的磁盘文件专门类似,差不多上有记录格式〔Record Format〕,都能够进行写操作〔WRITE〕,RPGLE 的程序对它们的操作方式也比较雷同。
所不同的是一般的磁盘文件的数据是储备在数据库中,而报表文件WRITE 了之后,是以脱机文件〔Spool File〕的形式存在。
因此在一个库中,磁盘文件具有唯独性,即不能有同名的磁盘文件;而在同一个输出队列中,同名的报表文件〔即生成的脱机文件〕,承诺有多个。
要做一个全新的报表打印,大致上能够分为画报表文件〔PRTF〕,与编写打印程序这两部分。
一、画报表文件〔PRTF〕1、新建立一个属性为PRTF的文件,然后使用19 进入报表编辑状态。
〔即STRRLU〕2、定义一个新的记录格式〔Record Format〕:DR + F18 + F10,注意看下方的功能键说明3、在一个记录格式之下,追加内容时,要在新的编辑行前加〝CLC〞,表示此行的内容,是属于上面记录格式的。
4、编辑行前加:DC:定义常量CF:使当前行的内容居中5、常用功能键:F13:标记/ 取消标记〔光标所指的字段〕。
多试一下就明白使用方法,能够将同一行的多个相连的字段标记成为一个块〔对首尾两个字段操作F13 即可〕。
高亮部分表示已被标记的块。
F14:将已标记的块COPY 到光标指定处。
〔事实上那个我用得不多〕F15:将已标记的块MOVE 到光标指定处。
〔那个用得许多〕F16:删除已标记的块。
〔那个用的频率也许多〕F11:定义新变量F23:进入当前字段的功能菜单画面6、对新变量的定义,按F11 之后,见到画面如下:Edited length . . . . . . . . . . . . : 1Record format . . . . . . . . . . . . : RCD001Number of keywords . . . . . . . . . : 0Number of indicators . . . . . . . . : 0Type choices, press Enter.Field . . . . . . . . . . . . . . . . FLD001 NameOption indicators . . . . . . . . . . 01-99, N01-N99More indicators . . . . . . . . . . N Y=Yes, N=NoStarting line . . . . . . . . . . . . 1-255Starting position . . . . . . . . . . 6 1-255, +nnLength of data . . . . . . . . . . . 1 1-378, +nn, -nn翻页,还有:Data type . . . . . . . . . . . . . . 1 1=Character2=Zoned3=Floating point4=Open5=Graphic6=Date7=Time8=Time stampDecimal positions . . . . . . . . . . 0-31, +n, -nReference a field . . . . . . . . . . N Y=Yes, N=NoUse referenced values . . . . . . . Y Y=Yes, N=No能够采纳直截了当定义长度、类型的方法,即在第1 页的最末尾,Length of data 处,填上字段长度;假如是字符型,就不需要再填其它内容;假如是数字型,在第2 页Decimal positions 处填上小数位数。
AS400应用技巧
应用技巧此AS400应用技巧资料仅供您参考使用, 请您于使用前测试,如何于 SQL 中指定 Physical file mult-member ?...有二种方式 :1. 使用 call procedure 方式, 呼叫系统程序 QCMDEXC , 并使用 OVRDBF 指令,call Qcmdexc('OVRDBF FILE(QTXTSRC) TOFILE(XXXXXX/QTXTSRC) MBR(TNT0001051) OVRSCOPE(*JOB)',000000074.00000)2.使用 SQL command : Create AliasCreate Alias CODE/COST97 for CODE/QTXTSRC(COST97)1.一个好用的数据库维护工具, 可直接维护单笔资料, 也可以使用 Hexadecimal(十六进制)模式进行资料为护, 此工具不支持中文, 但有 Source 可自行修改划面 DDS 属性为 "O" type,及修改程序有关该划面字段部份即可支持中文.来自 /mc/code99.cfm的数据库维护工具 WRKDBF: All Work and No Pay2. 想让你的程序 source 或批注于编辑时加上色彩吗 ? 如果使用 IBM Client Access 联机程序就可以直接于 SEU 中随意设定颜色, 可整行或片段指定颜色....1. 利用 Client Access 的 Keyboard setup 即可设定, 将 as400color.txt 存至你的硬盘并更名为 as400color.kmp,2. 在 Client Access 中选 menu bar "Assist" -> "Keyboard setup" -> "User defined" -> 指定键盘设定文件 as400color.kmp -> 确定.即完成设定. 可使用 W(白),R(红),Y(黄),P(紫),G(绿),B(蓝) 字母 + CTRL(正常) 或ALT(反白) 键组合, 例如在 SEU 中设定为插入(insert)模式, 使用 CTRL + "W" , 其后面的字会变白色, 若 ALT + "W", 其后面的字会变白色且反白, 其余 R, Y, P, G, B 亦是亦可下载 RPG Alive 2000 试用版 30 天, 须与 Client Access 搭配使用.3.于 RPG 中如何将字符转为数字 ? .IDS001 DSI 1 2 X2I B 1 20B2C MOVE X'A0' X1 1C Z-ADD*ZERO B2C MOVE X1 X2在这例子中 X1 = 16 进位 'A0' , 相当于 10 进位 160, 利用数据结构 DS001 定义同一位置, 但不同属性(一为文字 X2, 一为二进制数 B2 ), 将 X1 搬至 X2 右侧, 即可得 B2 =160. 这个技巧在做字符转换时很好用, RPG 并不提供字符值直接加减(但 C 语言可以),所以须透过转换, 希望未来 RPGIV 能提供 BIF 函数 %Hex 用于直接取用字符值4. 教你简化报表储存的指令, 系统没有提供指令,但有现成系统程序可用, USER 自己DIY,简单ㄡ..Step 1.CRTPF FILE(SPLFTEST) RCDLEN(4083) MAXMBRS(*NOMAX) TEXT('SAVE SPOOLED FILE FOR GETSPLF & PUTSPLF USED')Step2. Create GETSPLF 指令,(储存报表资料于档案(SPLFTEST)中)将 Command source copy to AS/400 , CRTCMD CMD(GETSPLF) PGM(QSPGETF)GETSPLF: CMD PROMPT('Get Spooled File')PARM KWD(FILE) TYPE(*NAME) LEN(10) RTNVAL(*NO) +RSTD(*NO) MIN(1) MAX(1) FILE(*IN) + FULL(*NO) EXPR(*YES) PASSATR(*NO) + PROMPT('Spooled file') PARM KWD(TOFILE) TYPE(Q1) RTNVAL(*NO) MIN(1) +MAX(1) FILE(*OUT) PROMPT('To data base file') PARM KWD(JOB) TYPE(Q2) RTNVAL(*NO) DFT(*) +SNGVAL((*)) MIN(0) MAX(1) FILE(*NO) + PROMPT('Job name') PARM KWD(SPLNBR) TYPE(*INT2) RTNVAL(*NO) +RSTD(*NO) DFT(*ONLY) RANGE(1 1999) + SPCVAL((*ONLY 0) (*LAST -1)) EXPR(*YES) + 5.V3R7 以后 RPGIV 有内建函数 %EDITC 用来处理数字转成文字输出格式, 此内建函数 %EDITC与报表数字输出格式 DDS 定义相同, 但 V3R2 无此内建函数, 可透过Edit Code API 来达到内建函数 %EDITC 用来处理数字转成文字输出格式的功能.数字转成文字格式输出样本 Summary of Edit Codes .....Convert Edit Code (QECCVTEC) API --- 转换指定之 Edit Code 为输出样本Edit (QECEDT) API -- 利用Edit Code 输出样本产生格式化数字转成文字输出数字格式转换程序范例 -- EDTCODR参数如下:C EDTCODR plistC parm SrcVar 欲转换之数字性文字C parm SrcVarCls '*ZONED'C parm EdtCode 数字格式C parm CurId 金钱符号C parm SrcVarPrc 数字性文字位数 C parm SrcDecPos 小数点位数C parm RcvVar 格式化数字输出测试数字格式转换程序范例 -- EDTCDETSTR将二范例程序上传至 AS/400 & Compiled EDTCODR, EDTCDETSTR, 执行 EDTCDETSTR.6.如何利用 TCP/IP FTP 从 AS/400 下载中文资料或从 PC 上传中文资料至 AS/400 ?....利用 TCP/IP FTP 作数据传输非常方便, 以下是范例:PC FTP to AS/400 to get DBCS data to PCClient ServerPC -----> AS/400 于 PC DOS 命令列下 FTP command7. 工具 : PRTRCDINF (Print record information) 打印档案字段格式 ......1. Copy PRTRCDINF to QCMDSRC2. Copy RCDINFC1P to QCLSRC3. Copy RCDINFR1P to QRPGSRC4. Copy RCDINFP1 to QDDSSRC5. Compile RCDINFP1, RCDINFR1P, RCDINFC1P6. CRTCMD CMD(PRTRCDINF) PGM(RCDINFC1)8.如何从 AS/400 激活 PC windows 应用软件或从 PC 激活 AS/400 应用软件? ..Windows 95,98, NT 上需有 REXECD (remote executing)Daemon 程序, 用于接收外界指令, 在 AS/400 使用指令 RUMRMTCMD ,只定 PC 应用软件完整路径, 例如:"C:\Program Files\Microsoft Office\Office\EXCEL.EXE"RUNRMTCMD +CMD('C:\PROGRAM FILES\MICROSOFTOFFICE\OFFICE\EXCEL.EXE') +RMTLOCNAME('145.59.1.78' *IP) +RMTUSER(user) RMTPWD(userpassword)同样的, 也可以从 PC 激活 AS/400 程序, PC 上有 REXEC.EXE 程序, 在 AS/400 上需激活Remote exection server: STRTCPSVR SERVER(*REXEC)REXEC xxx.xxx.xxx.xxx -l QSYSOPR +WRKACTJOB>C:\data\actjob.txtxxx.xxx.xxx.xxx : AS/400 IP address; -l is 小写 L , for usernamePC动作AS/400REXECD<------AS/400 传送 PC command to daemon programRUNRMTCMDREXECPC 传送 AS/400 command to AS/400 REXEC Server------>STRTCPSVR *REXECREXECD utility 可从 http:\\\download.htm 下载9. 清除报表工具 CLNUSRSPL (Cleanup User Spooled Files), 可指定多个使用者的报表于某日前之报表删除或集中归档, 指令范例 : ..CLNUSRSPL USRID(AA BB) OPTION(*INCLUDE) DELETEDATE(072499) ACTION(*DELETE) 清除使用者 AA 及 BB 于 1999 年 7 月 24 日(含24 日) 以前的所有报表CLNUSRSPL USRID(AA BB) OPTION(*OMIT) DELETEDATE(072499) ACTION(*DELETE)除使用者 AA 及 BB 报表不清除, 清除整个系统其它使用者于 1999 年 7 月 24 日(含24 日) 以前的所有报表CLNUSRSPL USRID(AA BB) OPTION(*INCLUDE) DELETEDATE(072499) ACTION(*ARCHIVE) + ARCHIVE(OUTQ)若指定 ACTION(*ARCHIVE) 及 ARCHIVE(OUTQ), 则将报表归档至 OUTQ10. OPNQRYF 之筛选条件内建函数 %WLDCRD, 可以使用 (Field *EQ %WLDCRD("*#*") 挑选Field 中含有字符"#" 的数据, 但若要挑Field 中不含有字符"#" 的资料(Field *NE %WLDCRD("*#*"), 系统却响应 %WLDCRD 参数错误,要如何解决 ?....%WLDCRD 内建函数仅应用于 *EQ 运算子,而无法使用于 *NE,所以须使用 *NOT 做逻辑运算挑选 Field 中含有字符 "#" 的数据 *EQ :OPNQRYF File(FileA) QRYSLT('Field *EQ %WLDCRD("*#*")')挑Field 中不含有字符 "#" 的数据 *NE:OPNQRYF File(FileA) QRYSLT('*NOT (Field *EQ %WLDCRD("*#*"))')11.要如何于 RPG/400 中计算某日为星期几 ?.....RPG/400 并不支持日期函数, 但可使用 ILE RPG/400 中 ILE CEE API CEEDAYS, CEEDYWK 来计算Convert Date to Lilian Format (CEEDAYS) API将文字型态日期转换为流水日数(以1582/10/15为基准日即 1, 1582/10/16 为 2....,依此累计至 9999/12/31)文字型态日期格式可为 MM/DD/YY, MMDDYY,MM/DD/YYYY, MMDDYYYY等.Calculate Day of Week from Lilian Date (CEEDYWK) API以 CEEDAYS 传回之流水日数为参数, 计算星期几,若传回 1-> 星期日, 2->星期一,..., 7->星期六此范例以系统日测试, 你可使用任何介于1582/10/15-- 999/12/31之日期测试 :H*Debug(*yes)D DateMDY S D datfmt(*mdy)D DateAlpha S 8 InzC CallB(D) 'CEEDAYS'C parm inputdateC parm 'MMDDYYYY' datefmtC parm DaysC Days DSPLY*C *MDY Move DateMDY Date6n 6 0C Date6n DSPLY*C Move Date6n Date6c 6C Date6c DSPLYC CallB(D) 'CEEDAYS'C parm Date6cC parm 'MMDDYY' datefmtC parm DaysC Days DSPLYC CallB 'CEEDYWK'C parm DaysC parm DayOfweekNC 'DayOfWeek' DSPLYC DayOfweekN DSPLY* For the day of week, 1 indicates Sunday, 2 indicates Monday, ..* 7 indicates Saturday.C Eval *InLR = *On12.要如何于SQL/400 同一资料文件(table)中找重复(Duplicated record) 的资料 ?...SELECT ALL *FROM file T01WHERE 1 < (SELECT count(*)FROM file T02WHERE T01.field = T02.field AND T01.field2 = T02.field2)ORDER BY T01.field asc, T01.field2 asc上述语法会传回二字段相同的重复 (Duplicated record) 资料13.System Request 的选项可以修改吗 ? 例如选项 3 DSPJOB, 可改为 WRKJOB 吗 ?... System Request 画面是无法修改, 但是选项执行的指令在有条件下是可以修改的System Request 选项的指令是放在讯息文件,可输入指令 WRKMSGD CPX2313 , 按执行键CPX2313 讯息如下:First-level message text . . . . 'ENDRQS DSPJOB DSPMSG SNDMSGSIGNOFF DSPMSG DSCJOB DSPWSUSR ENDRDBRQS '于画面上输入 2 于 CPX2313 前之OPT字段 , 修改指令 DSPJOB 为 WRKJOB.要修改必须字数不得多于原指令字数,且指令起始位置要一致,例如 WRKJOB 的 W, 要与 DSPJOB 的 D 同一位置14.如何传参数至 Query/400 ? ......1. 于 Query/400 筛选资料画面,设定接收参数(冒号开头代表参数),2. The Select Records Panel3.4.5. Select Records6. Type comparisons, press Enter. Specify OR to start each newgroup.7. Tests: EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS, ISNOT...8.9. AND/OR Field Test Value (Field, Number,'Characters', or ...)10. GLCOMP EQ :COMPANY11. AND GLBRAN EQ :BRANCH12. AND GLACC EQ :ACCOUNT13.-----------------------------------------------------------------------14. 参数名称有大小写之分, 且须符合定义于 STRQMQRY 指令中的参数,15. 而且参数定义必须在其它非参数筛选条件之前, 例如 :16.但是系统负载较低时, 由于系统暂存区尚未填满, 数据库资料不一致的情况就较会发生, 除非将档案参数 FRCRATIO 定义暂存区储存几笔资料笔数,当笔数累计至此参数值时, 系统即将暂存区资料写入档案, 至于参数 FRC 值笔数数目需自行调配产生,若希望有任何修改立即更新档案, 可将 FRCRATIO 参数值设为 1, 但这会增加系统负载, 需小心设定. CHFPF FILE(filename) FRCRATIO(1)修改参数 FRCRATIO 后, 使用到此档案的相关程序均需重新 Compiled, 该参数值才会生效.16.当执行命令 CMPPFM 比对 Source 时, 会有执行错误讯息 ? ......)若 Source file 的参数 IGCDATA 是 *YES(即 Source file 允许输入中文资料)时, 而系统报表文件 QUEPRT 参数 IGCDATA 是 *NO时, 由于参数属性不一致才有错误讯息, 将系统报表文件 QUEPRT参数 IGCDATA 改为 *YES 即可.CHGPRTF QUEPRT IGCDATA(*YES)17. 因有某些应用软件会使用 QTEMP 储存暂时性资料, 为便于做系统维护 , 要如何在同一台 AS/400 系统上由一工作站传送命令至另一远程工作站由远程使用者确认执行 ?......1. 事先设定远程工作站讯息序列之中断讯息处理程序, 一旦接收到含有命令的中断讯息, 便将命令显示在画面上 , 由远程使用者确认执行CHGMSGQ MSGQ(workstation) PGM(Break-message-program)2. 中断讯息处理程序(Break-message-program)接收系统传来的三个参数 :3. PGM( +4. &MSGQ /* MESSAGE QUEUE NAME */ +5. &MSGQLIB /* MESSAGE QUEUE LIBRARY NAME */ +6. &MSGKEY /* MESSAGE KEY */ +7. )8.9. DCL &MSGKEY *CHAR 410. DCL &MSGQ *CHAR 1011. DCL &MSGQLIB *CHAR 1012. DCL &MSG *CHAR 51213. DCL &RCVMSGTYPE *CHAR 214. DCL &SENDER *CHAR 8015. .16. .17. ./* 截取讯息 */18. RCVMSG MSGQ( &MSGQLIB/&MSGQ ) +19. MSGKEY( &MSGKEY ) +20. MSG( &MSG ) +21. SENDER( &SENDER ) +22. RTNTYPE( &RCVMSGTYPE )23. .24. .25. ENDPGM26. 可将命令利用传递中断讯息至远程工作站讯息序列,SNDBRKMSG MSG(Command) WRKSTN(workstation)18.AS/400 讯息回复分那几类 ? 且回复顺序为何 ?....讯息回复的种类是设定于工作环境设定档(JOBD)参数 INQMSGRPY,该 JOBD 并被指定于使用者设定档中, 用以设定使用者如何回复讯息的方式参数 INQMSGRPY 值有 :1. *RQD : 显示所有讯息交由使用者回复(系统默认值)2. *DFT : 由系统依各讯息预设回复值直接回复3. *SYSRPYL : 由系统自动回复值序列中寻找符合之讯息编号回复值, 若找到则依设定值自动回复, 否则显示讯息交由使用者回复. 可使用 WRKRPYLE 设定自己喜好的自动回复值19.欲使用 AS/400 Folder 时, Windows 系统响应拒绝存取讯息, 要如何解决 ?......1. 由于 Folder 档案系统属于 DOS 档案系统, 所以Client 端不论使用 Windows3.1, 95, 98(即使 95,98 支持长档名) 均必须使用 DOS 档案系统的命名规则,即文件名 8位 + 附属档名 3 位. ==> abcdefgh.txt2. 下 command WRKFLR , AS/400 系统若显示 CPF4A86 "Internal system objectsare damaged." Folder function 无法正常运作 ==> 下 command RCLDLO DLO(*INT) 或AS/400 重新开机,系统会自动修复20. 数据库中若有不正常数字资料常常导致执行程序当掉, 要如何找出不正常数字资料 ?......利用 SQL/400 HEX 十六进制码函数和 TRANSLATE 函数即可找出不正常数字数据? 测试 Packed 型态不正常数字资料SELECT RRN(file-name), Field1, HEX(Field1) FROM file-nameWHERE(TRANSLATE(HEX(Field1), '##########@@@@@@', '0123456789ABCDEF') NOT LIKE '%@'ORTRANSLATE(HEX(Field1), '##########@@@@@@', '0123456789ABCDEF') LIKE '%@%@' )? 测试 Zoned 型态 (7,0) 不正常数字资料例如 Field2 值为 123 ==> 十六进制码 F0 F0 F0 F0 F1 F2 F3Field2 值为 -123 ==> 十六进制码 F0 F0 F0 F0 F1 F2 D3SELECT RRN(file-name), Field2, HEX(Field2) FROM file-nameWHERE(TRANSLATE(HEX(Field2), '##########@@@@@@', '0123456789ABCDEF')NOT LIKE '_#_#_#_#_#_#@#')21.要如何于 SQL/400 中取代某字段之子字符串 ?...例如 field1 为文字型态, 长度 10 位, 欲将前二位值为 'YY' ,以 'XX' 取代? Update filename Set field1= Concat('XX', Substr(field1,3,10)) Where substr(field1, 1, 2) = 'YY'ORUpdate filename Set field1= 'XX' Concat Substr(field1,3,10) Where substr(field1, 1, 2) = 'YY'22.要如何于 SQL/400 中显示十六进位码 ?.....? Select field1, HEX(field1) form file-name利用 HEX 函数, 即可显示十六进位码23.要如何于 SQL/400 中利用 RRN(指写入档案的次序) 处理资料 ?...? Select RRN(file-name), field1,field2 from file-name(显示档案资料次序)? Select RRN(file-name), field1,field2 from file-name Where RRN(file-name) > 10000(筛选 RRN > 1000 之资料)? Update file-name Set field1 = value Where RRN(file-name) > 10000 (更新 RRN > 1000 之 field1 资料)24.要如何于 SQL/400 中计算二日期间的天数 ?.....? 使用 DATE Function ,其传回值格式为 yyyymmdd 共 8 位的数字? SELECT digits(DATE('02/01/96') - DATE('01/01/95')) FROM ....传回值为 '00010100'; 其间天数为一年一个月? 使用 DAYS Function ,其传回值格式为共 10 位的数字? SELECT digits(DAYS('01/01/96') - DAYS('01/01/95')) FROM ....传回值为 '0000000365'; 其间天数 365 天? 欲做如上测试时请先产生一暂存盘 sqltempf ; 指定一数字字段长度 8 位整数, 并新增一笔资料于暂存盘 sqltempf; 即可以 sqltempf 取代上述 FROM 后之 '. . . .' ; 于 SQL/400 执行上述表达式, 可得到上25.要如何于 RPG IV 中呼叫 CL 指令 ? ......1. 宣告 QCMDEXEC API2. D RunCLCmd PR EXTPGM('QCMDEXEC')3. D CmdStr 512 CONST OPTIONS(*VARSIZE)D CmdLen 15 5 CONST4. 将指令组成字符串参数 WrkStr, 再使用 CALLP 呼叫 CL 指令5. C CALLP(E) RunCLCmd(%TRIM(WrkStr) : +C %LEN(%TRIM(WrkStr))26.要如何于 CL 程序中检查是否润年 ? ....? 于 CL 程序中使用数学运算太麻烦了, 告诉你一个更容易的方法, 指令CVTDAT 已经知道那一年是润年, 只要将 "0229" 与二位数字年合并成 'mmddyy' 的格式, 当成指令 CVTDAT 的 DATE 参数值, 如果指令 CVTDAT 传回错误讯息 "CPF0555 日期错误或日期格式错误" , 那表示此二位数字年非润年, 如果无传回错误讯息, 此二位数字年即润年.? PGM (&YEAR)? DCL &YEAR *CHAR 2? DCL &MDY *CHAR 6?? CHGVAR (&MDY) ('0229' *cat &YEAR)? CVTDAT DATE(&MDY) TOVAR(&MDY) FROMFMT(*MDY) TOFMT(*MDY) TOSEP(*NONE)? MONMSG CPF0555 EXEC(DO)? SNDMSG MSGID(CPF9898) MSGF(QCPFMSG) +? MSGDTA('YEAR' *BCAT &YEAR *BCAT 'is not leap year') +? MSGTYPE(*COMP)? RETURN? ENDDO? SNDMSG MSGID(CPF9898) MSGF(QCPFMSG) +? MSGDTA('YEAR' *BCAT &YEAR *BCAT 'is leap year') +? MSGTYPE(*COMP)ENDPGM27.你时常使用 Query/400 产生报表吗 ? Query/400 所产生的报表均以 " * * * END OF REPORT * * *" 结尾, 如果你不喜欢这个讯息, Query/400 使用讯息文件 QQRYMSG 的讯息代码 QRX1905 当成 Query/400 所产生的报表结尾讯息, 你能修改或移除讯息内容......1. CRTMSGF 建立一新讯息文件2. ADDMSGD 将讯息代码 QRX1905 及输入报表结尾讯息于参数 MSG 存入新讯息文件, 若不希望有报表结尾讯息出现于报表上, 指定 ' ' 于参数 MSG.3. 在执行 query 前下 OVRMSGF(Override message file) 指令, 指定使用前项新讯息文件4. 在执行 query 后下 DLTOVR(Delete Override) 指令, 回复使用系统预设讯息文件28. 在您安装 Client Access 于客户端的 PC 后, 使用者便能利用 Windows 95/98/NT 的网络芳邻内的 "AS/400 Network" 开启 AS/400 的 QSYS.LIB 档案系统, 如同 PC 的网络磁盘驱动器, 使用者可看到,搬移,删除所有 AS/400 的档案, 使用者可将AS/400 的档案搬移至 Windows 的资源回收桶, 而 AS/400 并不支持 Windows 资源回收桶的还原功能, 这是很危险的, 有方法可以防止吗 ? .....所以为了防止此种情事发生, 唯一的方式是不让使用者利用网络芳邻存取AS/400 的 QSYS.LIB 档案系统, Client Access Host Service 是利用 "QPWFSERVER" 授权清单, 授权那些使用者可透过 Windows 的网络芳邻存取AS/400 的 QSYS.LIB 档案系统, 此授权清单的系统默认值是 *PUBLIC(*USE), 你只要利用指令 EDTAUTL QPWFSERVER , 按执行键将出现如下画面, 将 User *PUBLIC 的授权由 *USE 改为 *EXCLUDE 即可限制一般使用者透过Windows 的网络芳邻存取AS/400 的 QSYS.LIB 档案系统, 但此方式并无法管制有 *ALLOBJ 特殊权限的使用者.Edit Authorization List Object . . . . . . . : QPWFSERVER Owner . . . . . . . : QSYSLibrary . . . . . : QSYS Primary group . . . : *NONEType changes to current authorities, press Enter.Object ListUser Authority MgtQSYS *ALL X*PUBLIC *USE /* 将 User *PUBLIC 的授权由 *USE 改为 *EXCLUDE*/BottomF3=Exit F5=Refresh F6=Add new usersF11=Display detail object authorities F12=Cancel F24=More keys29.每次开机后均须手动下指令 STRTCP , STRHOSTSVR 以激活 TCP/IP 及 CLient Accesshost service, 有无其它方法可设定开机后自动激活 TCP/IP 及 CLient Access hostservice ? ......1. DSPSYSVAL QSTRUPPGM 找系统激活后的执行程序2. RTVCLSRC 将上述系统激活后的执行程序返解译回原始程序3. 将下列指令加入该原始程序的后段SYS/STRTCP /* 激活 TCP/IP */ MONMSG MSGID(CPF0000)SYS/DLYJOB 300 /* 等待激活 TCP/IP 动作完成 */MONMSG MSGID(CPF0000)SYS/STRHOSTSVR SERVER(*ALL) /* 激活 Client Access Host Server */ MONMSG MSGID(CPF0000)4. Compiled 修改后的激活程序取代旧的激活程序; 下次开机后, 就不必再下指令激活 TCP/IP 及 HOST server.5. 于 V4R2 后 STRTCP 已会自动将 Client Access Host Server 激活, 便不须要于系统激活后的执行程序加入指令 SYS/STRHOSTSVR SERVER(*ALL)30.于 CLP 中所宣告的档案仅能从头到尾读一次, 要如何于 CLP 中重读档案 ? ......? 于 CLP 中使用 TFRCTL 指令;例如程序名称为 TESTC?/*********************************************************************/? /* TESTC: 测试TFRCTL 指令. */?/*********************************************************************/?· PGM ( &last_read )·· DCL &last_read *CHAR 1·· DCLF testpf /* 宣告你要使用的档案 */··· LOOP:· RCVF /* 读取档案资料 */· MONMSG cpf0864 EXEC( GOTO end_loop )·· /* 处理所读取的资料 */·SNDPGMMSG MSGID( cpf9898 ) +·MSGF( qcpfmsg ) +·MSGDTA( &testpf ) +·MSGTYPE( *STATUS ) +· TOPGMQ( *EXT )· DLYJOB 1·· GOTO loop·· END_LOOP:· /* 由 last_read 参数值 -- 'Y' 不重复读 ; 否则重复读; 用以防止程序进入无穷循环 */· IF ( &last_read *EQ 'Y' ) DO· GOTO end_pgm· ENDDO· ELSE DO· CHGVAR &last_read 'Y'· TFRCTL TESTC ( &last_read ) /* TFRCTL 重新执行 TESTC 程序 */· ENDDO·· END_PGM:· /* End-of-program processing goes here */·ENDPGM31. 要如何开放某些指令给使用者于指令行(command line)使用, 但又需限制使用者仅能使用被开放的指令 ?.....1. 设定使用者设定档(User profile) 之参数 LMTCPB(*YES) 限制使用者不得使用指令行2. CLP 范例如 1998/12/07 之FSTMNUCMD 工具开放某些指令给使用者使用, 但使用者无法使用指令行3. 若要用指令行(command line),又要限制开放几个指令, 范例如下4. /*=============================================================== */5. /* = 说明... REQUEST PROCESSOR =*/6. /*=============================================================== */7.8. PGM9.10. DCL &MSG *CHAR ( 3000 )11. DCL &MSGID *CHAR ( 7 )12. DCL &MSGDTA *CHAR ( 100 )13. DCL &MSGF *CHAR ( 10 )14. DCL &MSGFLIB *CHAR ( 10 )15. DCL &KEYVAR *CHAR ( 4 )16. DCL &RTNTYPE *CHAR ( 2 )17. DCL &REJECT *LGL18. DCL &ERRORSW *LGL19.20. MONMSG ( CPF0000 MCH0000 ) EXEC( GOTO ERROR)21. /* ---------------------------------------------------------------*/22. /* - 显示指令行画面 (QCMD) -*/23. /* ---------------------------------------------------------------*/24.25. RECEIVE:26.27. CHGVAR ( &ERRORSW ) ( '0' )28.29. RCVMSG PGMQ( *EXT ) +30. MSGTYPE( *RQS ) +31. RMV( *NO ) +32. KEYVAR( &KEYVAR ) +33. MSG( &MSG ) +34. RTNTYPE( &RTNTYPE )35. MONMSG ( CPF2415 ) EXEC( RETURN) /* 使用者按 F3 or F12, 退出程序 */36. /* ---------------------------------------------------------------*/37. /* - 使用者按 F4 键, 显示指令参数画面 -*/38. /* ---------------------------------------------------------------39. IF ( &RTNTYPE *EQ '10' ) +40.+41. CHGVAR &MSG ( '?' *CAT &MSG )42.43. CALL QCMDCHK ( &MSG 3000 )44. MONMSG ( CPF6801 ) EXEC( GOTO RECEIVE )45. /* ---------------------------------------------------------------*/46. /* - 将指令参数由小写转大写 -*/47. /* ---------------------------------------------------------------*/48.49. RMVMSG PGMQ( *EXT ) +50. MSGKEY( &KEYVAR ) +51. CLEAR( *BYKEY )52.1. SNDPGMMSG MSG( &MSG ) +2. TOPGMQ( *EXT ) +3. MSGTYPE( *RQS )4.5. RCVMSG PGMQ( *EXT ) +6. MSGTYPE( *RQS ) +7. RMV( *NO )8.9. /*--------------------------------------------------------------------- */10. /* - 插入你自己撰写的使用者指令授权程序并传回该使用者是否可执行输入指令- */11. /*--------------------------------------------------------------------- */12.13. CALL YOURPGM ( &MSG &REJECT )14.15. IF ( &REJECT ) GOTO RECEIVE16.17. /* ---------------------------------------------------------------*/18. /* - 执行指令 -*/19. /* ---------------------------------------------------------------*/20.21. CALL QCMDEXC +22. ( &MSG 3000 )23.24. GOTO RECEIVE25.26. /* ---------------------------------------------------------------*/27. /* - ERROR HANDLER -*/28. /* ---------------------------------------------------------------*/29.30. ERROR:31.32. IF ( &ERRORSW ) +33.+34. SNDPGMMSG MSGID( CPF9897 ) +35. MSGF( QCPFMSG ) +36. MSGDTA( 'AN UNEXPECTED ERROR OCCURED. SEE JOB LOG.' ) +37. MSGTYPE( *ESCAPE )38.39. CHGVAR &ERRORSW ( '1' )40. RCVMSG MSGTYPE( *EXCP )+41. MSGDTA( &MSGDTA ) +42. MSGID( &MSGID ) +43. MSGF( &MSGF ) +44. MSGFLIB( &MSGFLIB )45.46. SNDPGMMSG MSGID( &MSGID) +47. MSGF( &MSGFLIB/&MSGF ) +48. MSGDTA( &MSGDTA ) +49. TOPGMQ( *SAME ) +50. MSGTYPE( *DIAG )51.52. GOTO RECEIVE53.54. /* ---------------------------------------------------------------*/55. /* - END OF PROGRAM -*/56. /* ---------------------------------------------------------------*/ENDPGM32.如果你想知道 AS/400 最近一次的开机过程, 过程中有执行那些步骤及各步骤的执行时间, 你能执行程序Call QSYS/QWCCRTEC . 执行程序后会产生一份报表文件 QPSRVDMP , 报表上会列出AS/400 控制面板上在开机时所出现的参考码(source panel code), 及其执行时间. ..欲知各参考码(source panel code)意义, 请参考AS/400 Service Functions manual(SY44-5902), 此书是随 AS/400 硬件到货.33.由于使用者正使用主画面, 该使用者便锁住该画面对象, 程序人员便无法 compile 加入新选项的主画面以取代旧主画面 , 除了所有使用者退至SignOn 画面, 再 compile 主画面外, 有无其它方式不管使用者是否正在使用主画面, 而可以随时修改画面 ?...·下载 Fast Menu Command (FSTMNUCMD) Utility让你可随时加画面选项, 不再受限于使用者; 最多 20 个选项; 亦可于 CLP 中使用1. Compiled 画面 DDS : FSTMNUCMDD; CRTDSPF FILE(FSTMNUCMDD)2. Compiled 指令处理程序: FSTMNUCMDC; CRTCLPGM PGM(FSTMNUCMDC)3. Compiled 指令原始文件 : FSTMNUCMD; CRTCMD CMD(FSTMNUCMD) PGM(FSTMNUCMDC)4. 范例· Fast Menu Command (FSTMNUCMD) ·· Type choices, press Enter. ·· Menu Heading 'Text' . . . . . . > '1234567890' ·· Option Description 'Text' . . . > 'Work with system status' · + for more values > 'Work with active job' · Command to run . . . . . . . . . > 'WRKSYSSTS' · + for more values > 'WRKACTJOB' ·· F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to usethis display· F24=More keys34. RTVSYSVAL 指令仅可传回 2 位数的年(如 97,98) , 要如何于 CLP 中取得 4 位数的年(如 1998)? .....·使用 System API QWCCVTDT· PGM· DCL &TODAY *DEC (8 0) /* TODAYS-DATE */· DCL &TODAYA *CHAR (8) /* TODAYS-DATE */· DCL &TIME *DEC (6 0) /* CURRENT-TIME */· DCL &TIMEA *CHAR (6) /* CURRENT-TIME */· DCL &NEWDTE17 *CHAR (17) /* STRING CONATAINING DATE &TIME */· /*传回格式 YYYYMMDDHHMMSSXXX XXXMEANS MINISEC*/·· CALL PGM(QWCCVTDT) PARM('*CURRENT ' ' ' +· '*YYMD ' &NEWDTE17X'00000000')·· CHGVAR VAR(&TODAY) VALUE(%SST(&NEWDTE17 1 8)) /*数字年月日 YYYYMMDD */· CHGVAR VAR(&TODAYA) VALUE(%SST(&NEWDTE17 1 8)) /*文字YYYYMMDD */· CHGVAR VAR(&TIME) VALUE(%SST(&NEWDTE17 9 6)) /*数字时分秒 HHMMSS */· CHGVAR VAR(&TIMEA) VALUE(%SST(&NEWDTE17 9 6)) /*文字HHMMSS */· SNDPGMMSG MSG(&TODAYA *BCAT &TIMEA) MSGTYPE(*COMP)ENDPFM35.如何于 RPG 程序中解决 Record locked 所引起执行程序中断的问题 ? .......1. 使用 OPcode(CHAIN,UPDATE) 的 Error Indicator;2. 使用 RPG File spec.中的参数 INFDS(File_information);且于Definition spec. 中定义 *Status code ("01128" : Record already locked.)3. 使用 RPG File spec.中指定参数 INFSR(File_Exeption/Error Subroutine)或于程序中加 *PSSR 子程序;Definition spec. 中定义 PSDS (Program Status Data Structure) position 209 to 213status code("01128" : Record already locked.); 程序不正常中断时, 系统会更新 PSDS ,并将控制权交给指定于 INFSR 的子程序 , 藉以解决程序中断的问题 ; 例如若遇到 Recordlocked 时便可传送讯息给锁住Record 的使用者请其 Released Record 或通知系统操作员处理;以下是程序片段仅供参考:4.5. FFile_name UF A E K Disk InfSr( *PSSR )6. .7. D PSDS SDS8. D Excp_data 91 170 /* Exception Data 错误讯息*/9. D File_info 209 24310. D Status_cde 209 213 /*Status code of last fileused 最后使用档案的状态码*/11. .12.C*-------------------------------------------------------------------*13. C* *PSSR: Error Subroutine for the procedure. *14.C*-------------------------------------------------------------------*15. C *PSSR BEGSR16. C IF Status_Cde = "01128"17. C* 撰写处理 Record locked 的程序.......18. .例如传送讯息给锁住 Record 的工作站或系统操作员19. C* 视程序设定传回值20. C* MOVE "*GETIN" ReturnPt *继续读取 Record *21. C* MOVE "*CANCL" ReturnPt *中断程序执行*22. C* MOVE " " ReturnPt *将控制权交由 ILE RPG/400 预设处理错误的程序23. C ELSE24. C* 撰写处理其它错误的程序.......25. .26. C ENDIF27. C ENDSR ReturnPt28. C* 须指定传回值于 OPcode ENDSR 的第二个参数欲知更详细资料请参考ILE RPG/400 Programmer's Guide Chapter 11. Handling Exceptions (有范例)ILE RPG/400 Refference Chapter 5. Exception/Error Data Structures and Subroutines (INFDS 及 INFSR 数据结构定义)36.如何检核 CL 指令语法(Command Syntax)符合 AS/400 的指令格式 ? ...........依不同状况有下列二种方法 :1. 于 CLP 中使用System API Check Command Syntax (QCMDCHK) API参数 1:指令字符串 Command string I/O;CHAR(*)参数 2:指令长度 Length of command string INPUT;PACKED(15,5)例如于 CLP 中PGMDCL &CMD *CHAR 512DCL &ERRMSG *CHAR 512MONMSG CPF0000 EXEC(GOTO ERROR)CHGVAR &CMD 'WRKSYSSTS'/* 亦可输入 "?WRKSYSSTS" 检查语法时系统会自动显示指令参数画面*//*问号开头会使系统显示指令参数画面 */Call QCMDCHK (&CMD 512) /* 检查语法 */Call QCMDEXC (&CMD 512) /* 执行指令 */RETURNERROR:RCVMSG MSGTYPE( *EXCP ) MSG( &ERRMSG )CHGVAR &ERRMSG ( 'ERROR:' > &ERRMSG )SNDPGMMSG MSG(&ERRMSG) MSGTYPE(*INFO)ENDPGM于 Command 中参数型态指定 *CMDSTR ,系统会自动检核该指令语法,但无法列出指令参数画面辅助供使用者,亦即使用者须自行输入所有参数;例如 "WRKCFGSTS *CTL CTLNAME";且指令不得以问号开头("?WRKSYSSTS"),问号开头会使系统显示指令参数画面;例如于 CMD 原始档中宣告/* CRTCMD CMD(RUNCMD) PGM(RUNCMDC) */CMD PROMPT('Command To Run')PARM KWD(CMD) TYPE(*CMDSTR) LEN(512) MIN(1) PROMPT('Command to run:')/* Processing PGM of RUNCMD command ; CRTCLPGM PGM(RUNCMDC) */PGM (&CMD)DCL &CMD *CHAR 512DCL &ERRMSG *CHAR 512MONMSG CPF0000 EXEC(GOTO ERROR)Call QCMDEXC (&CMD 512) /* 执行指令 */1. RETURNERROR:RCVMSG MSGTYPE( *EXCP ) MSG( &ERRMSG )CHGVAR &ERRMSG ( 'ERROR:' > &ERRMSG )SNDPGMMSG MSG(&ERRMSG) MSGTYPE(*INFO)ENDPGM37.如何指定 Interactive Job 于特定的子系统中执行 , 如将 DSP0101开头的数个工作站指定于 QPGMR 子系统中 ? ...1. 于子系统定义(Subsystem Descriiption)中指定该工作站名称(Workstation Name Entry)于指令输入ADDWSE 指令, 按PF4 输入工作站名称"DSP0101*" 及Subsystem Description name "QPGMR", 按执行键ADDWSE SBSD(QPGMR) WRKSTN(DSP0101*)2. 于程序中针对指定的工作站使用 TFRJOB 指令 , 能将 Interactive Job 从一子系统转至另一子系统TFRJOB JOBQ(job_queue)38.如何于 SQL 中将文字转成数字 ? ...........1. 将文字转成数字 ==> DECIMAL(string_field);(V4R2 以后才有此功能)有资料如下 :*...+....1....+....2....+....3....+....4....MAXWELL/SMART 000034932NOTOWN GASELECT DECIMAL(SUBSTR(Data,20,9)) FROM IMPORT ==> 传回值 34932.2. 将数字转成文字 ==> DIGITS(number_field) ; 此功能仅传回数字 , 并不包含正负号及小数点有资料如下 : CILUMNX 是四位整数二位小数且值为 -6.28DIGITS(COLUMNX) ===> 传回值 '000628'39.有些使用者同时于多台工作站 SignOn进入系统, 要送讯息给使用者 , 但无法确知其真正正在使用之工作站, 系统有传送中止画面讯息指令 SNDBRKMSG , 传送中止画面讯息至指定工作站 ; 但无法满足上述状况 , 有无其它工具传送中止画面讯息至同时使用多台工作站的使用者 ? .....要传送讯息至 "以相同的 USER ID 同时使用多台工作站的使用者" , 亦即以此USER ID SignOn进入系统的所有工作站多将收到讯息 , 不管使用者正在使用那一台工作站; 试试底下指令 , 能满足此需求CALL QEZSNDMG ==> 画面如下 :能指定讯息型态中止画面或要求使用者回复讯息 ; 输入讯息 ; 按 F10 传送Send a Message Type information below, then press F10 to send. Message needs reply . . . . . . N Y=Yes, N=No Interrupt user . . . . . . . . . N Y=Yes, N=NoMessage text . . . . . . . . . . Send to . . . . . . . . . . . . Name, F4 for listMore... F1=Help F3=Exit F10=Send F12=Cancel40. 如何取得由 Telnet 方式进入系统的 Client 端 IP address ?......利用 System API QDCRDEVD 取得 IP address ; 使用此范例程序时需输入工作站名称当参数 ,如 CALL RTVDEVIPC PARM('QPADEV0001') ; CL 程序范例如下PGM (&DEVICENAME)/******************************//* PARAMETERS *//******************************/DCL &DEVICENAME *CHAR 10DCL &IPADDRESS *CHAR 15/******************************//* PARAMETERS FOR QDCRDEVD *//******************************/DCL &RECEIVER *CHAR 892DCL &RCVRLENGTH *CHAR 4DCL &FORMATNAME *CHAR 8 'DEVD0600' /* THE FORMAT FOR DISPLAY DEVICES */DCL &ERRORCODE *CHAR 4 X'00000000' /* USE NORMAL ERROR HANDLING *//******************************//* SET LENGTH OF RECEIVER *//******************************/CHGVAR %BIN(&RCVRLENGTH) 892/******************************//* GET DEVICE INFO */。
AS400应用技巧
AS400应用技巧一、批处理技巧1.设置定期运行:使用AS400的调度任务功能,可以定期运行批处理作业。
您可以设置每日、每周或每月运行。
2.邮件通知:通过在批处理任务中添加命令,当任务完成时,系统会自动向指定收件人发送电子邮件通知。
3.运行任务序列:使用AS400的作业队列功能,可以设置多个任务之间的依赖关系。
任务将按照指定的顺序运行,而不是同时运行。
二、数据管理技巧1.数据备份:使用AS400的备份工具,可以定期备份数据库和文件系统。
您可以将备份数据存储在本地或远程服务器上。
2.数据恢复:如果出现数据丢失或损坏的情况,您可以使用AS400的恢复工具将备份数据还原到原始状态。
3.数据归档:如果您的数据库中的数据量过大,可以使用AS400的归档工具将旧数据移动到归档文件中。
这样可以减少数据库的大小,并提高系统性能。
三、安全管理技巧1.访问控制:使用AS400的访问控制功能,可以限制用户对系统资源的访问。
可以设置用户的权限,例如只读、读写或管理员权限。
2.密码策略:设置强密码策略,要求用户使用复杂的密码,并定期更改密码。
3.审计跟踪:开启AS400的审计功能,可以跟踪用户的操作记录。
这样可以检测潜在的安全问题,并追踪事件的原因。
四、性能优化技巧1.磁盘清理:定期清理磁盘空间,删除不再需要的文件和日志。
这样可以释放磁盘空间并提高系统性能。
2.内存管理:使用AS400的内存管理工具,可以优化系统的内存使用。
可以分配更多的内存给关键应用程序,减少交换内存的次数。
3.网络优化:优化网络设置,确保网络连接稳定和高效。
可以使用AS400提供的网络优化工具来识别和解决网络瓶颈问题。
五、编程技巧1.使用模块化编程:采用模块化编程方法,将代码拆分为可重用的模块。
这样可以提高代码的可读性和维护性。
2.错误处理:在编程时,务必添加适当的错误处理机制。
这样可以捕获和处理潜在的异常,保证程序的稳定性。
3.性能优化:通过使用高效的算法和优化技巧,可以改善程序的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AS400中画出固定格式源码的逻辑对于使用固定格式的RPG源码,我们在查看时,如果对于行数比较少的代码来说可能逻辑能很简单的就理出来,但对于代码行数较多(比如1000行,甚至更多时),逻辑就不那么容易能看出来,所以针对这一问题,我们可以将源代码进行重写,使用符号(’+’ , ’|’)连线画出它的逻辑,这样对快速了解源代码的功能有很大的帮助。
以下是我写的比较粗陋的代码,其中源码SCANFC为CLLE程序,主要是控制生成重写的文件的位置以及复制源码和调用格式转换程序等动作;源码SCANS01为自由格式的RPGLE,主要是将复制后的源码按逻辑进行连线等等更新操作;源码SCN为CMD菜单,编译完成后我们可以通过在命令行输入SCN调起源码转换浏览程序。
当然如果熟悉option file的同学也可以直接在option里面加入简单的option,这样在使用过程中就能更方便的进行使用了,我设置的是SF。
图1.转换前的格式(比较懒,只是为了测试,所以只写了操作码,方便大家理解功能)图2.转换后的格式(比较懒,只是为了测试,所以只写了操作码,方便大家理解功能)源码SCANFC:PGM PARM(&SRCL &SRCF &SRCM)DCL VAR(&SRCL) TYPE(*CHAR) LEN(10)DCL VAR(&SRCF) TYPE(*CHAR) LEN(10)DCL VAR(&SRCM) TYPE(*CHAR) LEN(10)MONMSG MSGID(CPF0000) EXEC(GOTO ENDPGM)DLTF FILE(TEMPSRCF)/*跳过文件不存在错误*/MONMSG MSGID(CPF2105)/*创建接收重写的源文件*/CRTSRCPF FILE(QTEMP/TEMPSRCF) RCDLEN(132) IGCDTA(*YES)/*将要重写的源码复制到临时库的临时文件里*/CPYF FROMFILE(&SRCL/&SRCF) TOFILE(QTEMP/TEMPSRCF) +FROMMBR(&SRCM) TOMBR(&SRCM) MBROPT(*REPLACE) CRTFILE(*YES) +FMTOPT(*MAP *DROP)/*调用源码转换程序生成逻辑连线*/CALL PGM(SCANS01)/*显示重写的源码*/STRSEU SRCFILE(QTEMP/TEMPSRCF) SRCMBR(&SRCM) OPTION(5)ENDPGM:ENDPGM源码SCANS01:FTEMPSRCF UF E K DISKF RENAME(TEMPSRCF:TEMPSRC)*DSCNT S 4P 0DSCNT1 S 4P 0DSCNT2 S 4P 0DSCNT3 S 4P 0DT_SRCDTA S LIKE(SRCDTA)DLOW C CONST('abcdefghijklmnopqrstuvwxyz')DUP C CONST('ABCDEFGHIJKLMNOPQRSTUVWXYZ')D*颜色常量,X'38':紫色,这个可以自定义DCC_PUR C CONST(X'38')*/FREE//=主过程=============================================================== Read TEMPSRC;Dow not %eof;//如果为空行继续处理下一行If %Subst(SRCDTA:6:1) = ' ' And %Subst(SRCDTA:7:1) = ' ';Read TEMPSRC;Iter;EndIf;//每处理一行之前将该行的小写字母全部转换为大写T_SRCDTA = %Xlate(Low:Up:SRCDTA);//如果为自由格式的则直接退出If %Subst(T_SRCDTA:7:5) = '/FREE';Exsr EXIT;EndIf;//为C表,且不为注释行,进行转换处理If %Subst(T_SRCDTA:6:1) = 'C' And %Subst(T_SRCDTA:7:1) <> '*';// 如果为IF,DO,SELECT,FOR,If %Subst(T_SRCDTA:26:2) = 'IF' OR %SUBST(T_SRCDTA:26:2) = 'DO' OR %Subst(T_SRCDTA:26:3) = 'FOR' OR %Subst(T_SRCDTA:26:6) ='SELECT';Exsr STRD;// 如果为END*ElseIf %Subst(T_SRCDTA:26:5) = 'ENDDO' OR%Subst(T_SRCDTA:26:5) = 'ENDIF' OR%Subst(T_SRCDTA:26:5) = 'ENDSL' OR%Subst(T_SRCDTA:26:6) = 'ENDFOR';Exsr ENDD;// 如果为ELSE,WHENElseIf %Subst(T_SRCDTA:26:4) = 'ELSE' OR %Subst(T_SRCDTA:26:4)= 'WHEN';//注意由于此处调用的为处理IF,DO,SELECT,FOR类操作码子过程,但位置//并不需要加1,所以先减1后再调用SCNT = SCNT - 1;Exsr STRD;// 如果为其他Else;Exsr MIDD;EndIf;EndIf;//如果为注释行,则上色,紫色:X'38'If %Subst(T_SRCDTA:7:1) = '*';%Subst(SRCDTA:6:1) = CC_PUR;Update TEMPSRC;EndIf;Read TEMPSRC;EndDo;Exsr exit;//主过程结束====================================================//处理操作码为IF,DO,FOR,SELECT等行子过程Begsr STRD;SCNT = SCNT + 1;SCNT1 = 1 ;DoW SCNT1 <= SCNT;If SCNT = SCNT1;SRCDTA = %Trimr(%Replace('+':SRCDTA:25+SCNT:0));SCNT1 = SCNT1 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT1:0));SCNT1 = SCNT1 + 1;Endif;EndDo;Update TEMPSRC;EndSR;//处理操作码为ENDIF,ENDDO,ENDFOR,ENDSL等行子过程Begsr ENDD;SCNT2 = 1;DoW SCNT2 <= SCNT;If SCNT2 = SCNT;SRCDTA = %Trimr(%Replace('+':SRCDTA:25+SCNT2:0));SCNT2 = SCNT2 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT2:0));SCNT2 = SCNT2 + 1;Endif;EndDo;SCNT = SCNT - 1;Update TEMPSRC;EndSR;//处理其他操作码等行子过程Begsr MIDD;SCNT3 = 1 ;DoW SCNT3 <= SCNT+1;If SCNT3 = SCNT+1;SRCDTA = %Trimr(%Replace(' ':SRCDTA:25+SCNT3:0));SCNT3 = SCNT3 + 1;Else;SRCDTA = %Trimr(%Replace('|':SRCDTA:25+SCNT3:0));SCNT3 = SCNT3 + 1;Endif;EndDo;Update TEMPSRC;Endsr;//程序结束子过程Begsr EXIT;*INLR = *ON;Return;Endsr;源码SCN:CMD PROMPT('Scan Member Source By Change')PARM KWD(SRCL) TYPE(*CHAR) LEN(10) PROMPT('Source +Library')PARM KWD(SRCF) TYPE(*CHAR) LEN(10) PROMPT(' +Source File')PARM KWD(SRCM) TYPE(*CHAR) LEN(10) PROMPT('Source +Member')注意:如果源码的逻辑本身就有问题,连线可能会出现问题,比如,错位,不连续等等。
当然,这个只是简单的实现了连线,其实我们可以加入更多东西,比如如果源码的逻辑有问题给他返回报错,不同操作码上不同颜色,在文件尾引入F表定义的文件的结构,等等等,同学们自己发挥,只要你能想到,能去动手,那么就能实现,一切都很简单,不是吗?同时注意:同学们在编译源码SCANS01时要先在QTEMP库下创建源文件(PF-SRC)TEMPSRCF,执行语句:CRTSRCPF FILE(QTEMP/TEMPSRCF) RCDLEN(132) IGCDTA(*YES)否则编译会报文件不存在错误创建SCN菜单,当然如果库中已经存在了SCN这个菜单,那么你可以更换名称CRTCMD CMD(*CURLIB/SCN) PGM(*CURLIB/SCANFC)。