Ibm midrange IBMi(iSeries)视图点脚本

Ibm midrange IBMi(iSeries)视图点脚本,ibm-midrange,iseries-navigator,Ibm Midrange,Iseries Navigator,我试图将当前存储在ViewPoint中的内容作为脚本运行,并将其转换为SQL和计划任务。我的问题很简单,我不知道I系列使用的脚本语言。 谁能告诉我最终的价值是什么 &启动和启动2和启动3 CHGVAR VAR(&OFFSET) VALUE(0) CHGVAR VAR(&STARTS) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 1) Month)||'/22/'||YEAR(Current Date-(&OF

我试图将当前存储在ViewPoint中的内容作为脚本运行,并将其转换为SQL和计划任务。我的问题很简单,我不知道I系列使用的脚本语言。 谁能告诉我最终的价值是什么 &启动和启动2和启动3

CHGVAR VAR(&OFFSET) VALUE(0)
CHGVAR VAR(&STARTS) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 1) Month)||'/22/'||YEAR(Current Date-(&OFFSET+1) month))))
CHGVAR VAR(&STARTS2) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 2) Month)||'/22/'||YEAR(Current Date-(&OFFSET+2) month))))
CHGVAR VAR(&STARTS3) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 3) Month)||'/22/'||YEAR(Current Date-(&OFFSET+3) month))))

iSeries的一个相对漂亮的地方是它可以让你做“自然语言”日期数学:
当前日期-2个月
正是它听起来的样子,一个正好比今天早两个月的日期

因此,假设它实际按照编写的方式工作,该脚本所做的是:

  • 将变量
    和偏移量
    设置为0。(
    CHGVAR
    命令是iSeries指定值的详细方式:在大多数语言中,您可以编写
    &OFFSET=0
    ,即使使用iSeries,您也可以将其缩短为
    CHGVAR&OFFSET 0
  • 将变量
    &start
    设置为上月22日,其中日期为CYYMMDD格式。(它通过基于“使用比今天早一个月的月份,22作为日期,以及比今天早一个月的月份的年份”来构造日期,然后将其转换为CYYMMDD格式
  • 将变量
    &STARTS2
    设置为2个月前的第22个月
  • 将变量
    &STARTS3
    设置为3个月前的第22个
如果您要调整
和OFFSET
的值(通过更改其
值(0)
赋值),您的计算日期在过去会远得多:将其设置为
值(4)
将得到5、6和7个月前的日期

顺便说一下,在CYYMMDD格式中,“C”是1900年以来的世纪计数器;本质上,日期是YYYYMMDD-19000000形式的整数。 因此,1999年1月1日=19990101为YYYYMMDD格式,或0990101为CYYMMDD格式;2011年12月31日=20111231为YYYYMMDD格式,或1111231为CYYMMDD格式

因此,如果您今天(2015年8月19日)运行此程序,您将获得以下结果:

  • &开始=1150722
  • &STARTS2=1150622
  • &STARTS3=1150522

顺便说一下,您编写脚本时使用的语言称为“CL”(是“命令语言”的缩写),官方语言参考是。

iSeries的一个相对漂亮的地方是,它可以让你做“自然语言”日期数学:
当前日期-2个月
正是它听起来的样子,一个正好比今天早两个月的日期

因此,假设它实际按照编写的方式工作,该脚本所做的是:

  • 将变量
    &OFFSET
    设置为0。(
    CHGVAR
    命令是iSeries指定值的详细方式:在大多数语言中,您可以编写
    &OFFSET=0
    ,即使使用iSeries,您也可以将其缩短为
    CHGVAR&OFFSET 0
  • 将变量
    &start
    设置为上个月的22号,其中日期为CYYMMDD格式。(它通过基于“使用今天之前一个月的月份,22号作为日期,以及今天之前一个月的月份的年份”构造日期,然后将其转换为CYYMMDD格式来实现此目的
  • 将变量
    &STARTS2
    设置为2个月前的第22个月
  • 将变量
    &STARTS3
    设置为3个月前的第22个
如果您要调整
和OFFSET
的值(通过更改其
值(0)
赋值),您的计算日期在过去会远得多:将其设置为
值(4)
将得到5、6和7个月前的日期

顺便说一下,在CYYMMDD格式中,“C”是1900年以来的世纪计数器;本质上,日期是YYYYMMDD-19000000形式的整数。 因此,1999年1月1日=19990101为YYYYMMDD格式,或0990101为CYYMMDD格式;2011年12月31日=20111231为YYYYMMDD格式,或1111231为CYYMMDD格式

因此,如果您今天(2015年8月19日)运行此程序,您将获得以下结果:

  • &开始=1150722
  • &STARTS2=1150622
  • &STARTS3=1150522
顺便说一下,您编写脚本时使用的语言称为“CL”(Command language的缩写),官方语言参考位于

有人能告诉我&start的结果值是多少吗 &开始2和开始3

CHGVAR VAR(&OFFSET) VALUE(0)
CHGVAR VAR(&STARTS) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 1) Month)||'/22/'||YEAR(Current Date-(&OFFSET+1) month))))
CHGVAR VAR(&STARTS2) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 2) Month)||'/22/'||YEAR(Current Date-(&OFFSET+2) month))))
CHGVAR VAR(&STARTS3) VALUE(CYYMMDD(DATE(MONTH(Current Date- (&OFFSET + 3) Month)||'/22/'||YEAR(Current Date-(&OFFSET+3) month))))
TL;DR:结果值将是未定义的,因为只有第一个CHGVAR命令可能会编译。其他命令有很多问题。作为伪代码,这些语句是可以的,但当它们表示为实际的CL语句时,它们将扩展为大量代码

详细信息:

一个潜在的问题是将CL视为一种“脚本语言”。虽然它当然可以而且通常用于“脚本”,但它是系统的“控制语言”。就“脚本”而言,一个体面的C程序员用C代替CL和“脚本”一样容易类似地,我见过RPG开发人员在RPG中完成了大部分的“脚本编写”。COBOL也是如此

CL也是系统的“命令语言”。在当前受支持的操作系统版本中,您可能会发现近2000个命令。许多系统功能只能通过命令,或通过调用或调用执行命令的程序来完成。通过将命令字符串传递给系统的命令处理API之一,每种本机语言都可以交互执行大多数命令。Even CL是一种编译语言,可以像其他语言一样交互执行命令

尽管如此,CL还是经过编译的。它也可以作为一种ILE语言完全参与进来,尤其是从V5R4版本的操作系统开始,但从技术上讲,ILE是在as/400系列中首次引入的

作为ILE的参与者,CL可以完全访问其他母语具有的相同功能。例如,CL可以使用funct的C运行时库