as400 ILE操作码

ACQ{(E)}(Acquire) 取地址位
--------------------------------------------------------------------------------------------------------------------------
ADD{(H)}(Add) 加法操作
ps:a add b  c  变量a加上变量b赋值给变量C
--------------------------------------------------------------------------------------------------------------------------
Adddur{(E)}(Add Duration) 日期时间相加
ps:a addur 3:*D b  在a日期上加上3天赋值到b
*D表示天,*M表示月,*Y表示年
--------------------------------------------------------------------------------------------------------------------------
Begsr(beginning of subroutine)子过程开始出
ps: begsr 子过程名
     ....
     endsr

-------------------------------------------------------------
call{(E)} (call a program) 调用外部程序
ps: call  外部程序名(加入外部程序名加单引号的话就直接调用这个外部程序,加入没有加入单引号就表示call的是一个变量名,当变量名的值为XXX时,调用的就是XXX程序)
--------------------------------------------------------------------------------------------------------------------------
CASXX(conditionally invoke subroutine)带条件的调用子过程
ps:XX可选值为:EQ(=),NE(<>),GT(>),LT(<),GE(>=),LE(<=)
ps: a  caseq '1'   sub01
    a  caseq '2'   sub02
       cas         sub03
       endcs
表示当a=1的时候表用sub01这个子过程,当a=2的时候调用sub02,当都不等于的时候调用sub03这个子过程
类似于 select
       when   a='1'
       exsr   sub01
       when   a='2'
       exsr   sub02
       other
       exsr   sub03
       endsl

--------------------------------------------------------------------------------------------------------------------------
cat{(p)}(concatenate two character strings)字符连接
 基本语法:a  cat  b:0    c 表示。。 将b拼在a的后面,0代表中间每空格,同理1的话代表中间有一个空格,3就是3个空格
注意cat的时候a假如后面有空格会自动去除
ps:不考虑空格的情况下eval c=a+b等同于上面语法

--------------------------------------------------------------------------------------------------------------------------

CHAIN{(N|E)}(Random retrieval from a file) 按键值对文件记录进行查询定位      HI   LO   EQ
ps:变量名(该变量名必须与逻辑文件的key类型,长度都相同)  CHAIN   记录格式    17   18
17,18  代表指示器(0-99之间),hi指示器表示是否查询到相应记录,查询不成功时打开hi指示器
LO指示器表示查询时,文件是否被锁,文件被琐时,打开lo指示器;*IN17=‘0’表示查到了记录

--------------------------------------------------------------------------------------------------------------------------

CLEAR(clear)  清除内容
基本语法:clear  目标名(可以是结构,文件的记录格式名)

--------------------------------------------------------------------------------------------------------------------------
CLOSE{(E)}(close files) 关闭文件
基本语法 close  目标文件名(只是文件名不是记录格式名)
close只适用于声明文件时,keyword使用‘usropn’ 关键字的文件,
每一个close操作前面都必须有一个open文件的操作
close  *ALL  表示关闭前面所有open的文件
--------------------------------------------------------------------------------------------------------------------------

COMMIT{(E)}(Commit)日志食物处理的确认操作
基本语法:commit    没其他参数,是指对事务处理进行确认操作

--------------------------------------------------------------------------------------------------------------------------
DEfine(Field Definition) 根据已知字段老定义新字段
ps: *like  define   a      b 
变量b的类型跟a一样

--------------------------------------------------------------------------------------------------------------------------

delete{(E)}(DELETE RECORED)删除当前记录
基本语法:delete   文件记录格式名
是用delete之前必须先定位到具体记录上(chain,read等)同时在F声明时必须是用修改的方式声明

--------------------------------------------------------------------------------------------------------------------------
do(Do) 循环
基本语法   do   10
           循环中处理的内容
           enddo
上面的意思表示循环10次,也可以用整数型参数来表示循环的次数

--------------------------------------------------------------------------------------------------------------------------
DOU{(M|R)}(do until) 当满足factory2条件是跳出循环
基本语法  dou    a>b
          处理过程
          enddo

--------------------------------------------------------------------------------------------------------------------------
dow{(M|R)}(do while)与dou相反他是只有满足factory2的时候才进入

--------------------------------------------------------------------------------------------------------------------------

if,else,elseif,endif逻辑判断语句(同其他语言相同)

--------------------------------------------------------------------------------------------------------------------------
endyy(end a structured group)
endif 对应  if,ifxx
endsr 对应  begsr
enddo 对应  do,dow,dou,douxx,dowxx
endsc 对应  casxx
endsl 对应  select
endfor对应  for

--------------------------------------------------------------------------------------------------------------------------

endsr子过程结束语句

--------------------------------------------------------------------------------------------------------------------------
eval{(H|M|R)}(evaluation) 赋值语句
基本语法eval   a=b  把等号右边赋值给等号左边、

--------------------------------------------------------------------------------------------------------------------------
EXFMT{(E)}(Write/then read format)显示屏幕文件并等待输入
ps:EXFMT   记录格式名
--------------------------------------------------------------------------------------------------------------------------
Exsr(Invoke subroutine) 执行子过程
ps:EXSR   子过程名
--------------------------------------------------------------------------------------------------------------------------
Extrct{(E)}(Extract Date/Time)取日期,时间型变量中的具体内容
ps:首先必须有一个事件或日期变量,且变量必须有值
extrct   FLD01:*Y       fldyear         fld01 是日期变量。  注意定义的赋值变量必须和你要拿的变量长度相同;
--------------------------------------------------------------------------------------------------------------------------FOR   循环
--------------------------------------------------------------------------------------------------------------------------
GOTO(Go  to) 跳转语句
TAG(tag) 定义标签
跳转到指定的标签处,需要用TAG来定义,
ps:  fhstag  TAG
      goto  fhstag

--------------------------------------------------------------------------------------------------------------------------
if   条件判断
--------------------------------------------------------------------------------------------------------------------------

iter(iterate) 循环中,不处理此语句之后的语句
ps:相当于countinue

--------------------------------------------------------------------------------------------------------------------------
KList (define a composite key)
KFLD( define parts  of a key)定义组合键值中的字段
ps:  Factory1    operation   factory2      result
     fhskey      klist                            //定义组合键fhskey
                 kfld                      fld01  //组合键的首个字段为fld01
                 kfld                      fld02  //组合键的第二个字段fld02
是用klist的方法是如下
fhskey   chain    fmtfhs(记录格式名,也可以是逻辑文件名字Pffhsl3)
fhskey   stell    fmtfhs 
意思是按照这个组合键值查询定位到逻辑文件pffhsl3中去
--------------------------------------------------------------------------------------------------------------------------

lookup(look up a table or array element)对数组的查询定位
ps:先定义一个数组并赋值
     array(1) = '0001'
     array(2) = '0002'
     array(3) = '0003'
factory1   operation   factory2  result   HI  LO   EQ
           Eval        N=1
'0002'     lookup      array(N)                    54

array(N)表示从数组的第N条开始检索,。检索条件为'0002',EQ指示器:当找到记录时打开指示器即:*IN54=‘1’,当未找到记录时指示器处于关闭状态,*IN54=‘0’

--------------------------------------------------------------------------------------------------------------------------

MOVE(move) 赋值语句
factory1  operation   factory2   result    HI  LO  EQ
          MOVE       FLD01      FLD02
允许在move的过程中对result字符进行定义,move是右赋值
MOVEL 是左对齐
--------------------------------------------------------------------------------------------------------------------------
MOVEA{(P)}(Move array) 数组赋值
ps: dimdata(1)='01'
    dimdata(2)='02'
    dimdata(3)='03'
factory1  operation  factory2  result   HI   LO   EQ
          MOVEA      *BLANK    dimdata
这样数组就清空,或者movea    fld01    dimdata   后,数组的值将是如下:
dimdata(1)='AB'
dimdata(2)='CD'
dimdata(3)='EF'
--------------------------------------------------------------------------------------------------------------------------
OPEN{(E)}(OPEN File for  prcessing) 打开文件
factory1  operation  factory2   result   HI LO EQ
          open       文件名
文件名必须是已经声明的文件名(不是文件的记录格式名)并且在open之后,程序关闭之前必须有对应的close操作
使用open操作,文件在声明时,必须使用USROPN关键字

--------------------------------------------------------------------------------------------------------------------------
Select(begin a select  group) 分支语句
when{(M|R)}(when)  分支判断语句中的条件判断
OTHER(Otherwise select) 分支语句的判断
ps: factory1  operation   factory2  result   HI  LO  EQ
              select
              when        条件判断1
              处理语句1
        when        条件判断2
       处理语句2
       Other
              处理语句3
              endsl
--------------------------------------------------------------------------------------------------------------------------
Plist(Identify a  parameter  List)定义集合
Parm(Identify  parameters) 定义入口参数
ps: factory1   operation  factory2  result  HI  LO  EQ
     *Entry     Plist
                Parm                 PLD01

--------------------------------------------------------------------------------------------------------------------------
READ{(N|E)}(Read  a  Record)读取记录
ps: factory1   operation   factory2       result   HI  LO  EQ
               read        文件记录格式名              45  46
Read后面跟的必须是文件记录格式名:
LO指示器表示锁定指示器,当在指定时间需要读取的记录仍然被锁,将会打开LO指示器,既*IN45=‘1’;
EQ指示器为是否读到指示器,当未读到任何记录时,打开EQ指示器,*IN46='1';
当文件在程序中,是用只读声明时,read操作并不会造成锁表.用修改声明时,该记录会被锁,知道执行unlock或updata,或read该文件的其他记录才会解锁;
如果该文件在修改声明时,但是希望read的时候不照成锁表,可以用read(N)使用,但是同时也不能修改记录,如果需要修改记录,就必须对该记录进行一次chain或者read操作,
注意:如果要修改记录,就必须先锁住当前记录
--------------------------------------------------------------------------------------------------------------------------
stell-read    定位读取
stell-reade   定位判断是否相同读取
setGT-readp   定位到最后一条 在从最后一条往上读取
setGT-readpe  定位到最后一条。在从最后一条往上读取符合条件的记录

--------------------------------------------------------------------------------------------------------------------------
Reset{(E)}(reset)
将数据结构恢复到初始值,假如没有初始值的情况下,数字默认为0,字符默认为空;
--------------------------------------------------------------------------------------------------------------------------
Return{(H|M|R)}(return to caller)
程序结束
--------------------------------------------------------------------------------------------------------------------------
ROLBK{(E)}(Roll Back)
回滚

--------------------------------------------------------------------------------------------------------------------------
SCAN{(E)}(Scan Character string) 扫描字符串
ps:   factory1   operation   factory2   result   HI  LO  EQ
      FLD01      SCAN        FLD02      N                26
判断FLD02在FLD01里面是否存在,假如存在打开*IN26='1'指示器,并给N赋值该位置,假如不存在*IN26='0'
--------------------------------------------------------------------------------------------------------------------------
SetGT{(E)}(Set  Greater Than)  定位操作-大于
定位在符合条件的最下面;
--------------------------------------------------------------------------------------------------------------------------
stell{(E)}(Set lower limit)定位操作-小于
定位在符合条件的上方
--------------------------------------------------------------------------------------------------------------------------
Unlock{(E)}(Unlock a data area  or release a record) 解锁
factory1     operation    factory2    result    HI   LO    EQ
             Unlock       文件记录格式名
--------------------------------------------------------------------------------------------------------------------------
Update(modify existing record) 修改记录
factory1     operation    factory2    result    HI   LO    EQ
             Update       文件记录格式名
ps:update 操作必须是在read到一条数据之后才能执行,还有该数据必须是已经被锁定,
--------------------------------------------------------------------------------------------------------------------------
Write(create  new records)写记录
常用方式:
            Factory1     operation     factory2     result    HI    LO     EQ
                         Clear                      文件记录格式名
                         eval          文件字段1=xxxx
                         eval          文件字段2=xxxx
                         write         文件记录格式名
ps:文件必须声明为可写的;
--------------------------------------------------------------------------------------------------------------------------
*all   全部
eval     FLD01=*ALL'0'   变量FLD01全部赋值为0
Close    *All            关闭所有文件
--------------------------------------------------------------------------------------------------------------------------
%Len  取字符串长度:
ps:(MYLEN为数字型变量,FLD01为字符型变量)
        EVAL        MYLEN=%len(FLD01)
这样拿到的就是变量fld01的总长度,当它的长度为2,就算没有值 他的长度也是2
所以一般情况下我们是和%trim或者%trimr一起用,例如
EVAL    MYLEN=%len(%trimr(fld01))

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值