命令行是指在类似于DOS中,用字符串形式的命令来执行程序。各类系统都支持命令行的使用,如Linux系统的控制台,或者Windows系统的command窗口等。
用命令行来计算集算器网格文件时,需要使用esprocx.exe文件,在集算器安装目录的esProc\bin路径下,可以找到。
在命令行执行网格文件使用esprocx.bat命令即可,这个批处理文件默认情况下会执行如下操作:
如下面的网格文件D:\files\output1.splx,创建了一些模拟数据,存储到文本文件Data1.txt中。:
|
A |
B |
1 |
=create(ID,Amount) |
|
2 |
for 100 |
>A1.insert(0,#A2,rand(100*100)) |
3 |
=file("D:\\files\\Data1.txt") |
>A3.export@t(A1) |
无返回结果的文件,往往用来读写文件或数据库,只需在esprocx.bat后面指明需要执行的脚本文件。执行时,屏幕上会显示开始执行以及结束执行的消息,如下:
执行后,生成的随机数据会写入Data1.txt文件,如下所示:
如果esprocx.bat文件所在路径被设入了操作系统的path列表,可以直接运行esprocx,而不必在安装目录的esProc\bin路径下。但是,调用的脚本文件必须指明全路径,或者要位于当前路径中,如:
如果运行的网格文件中,使用了参数,那么在执行esprocx.bat时,在脚本文件名后输入参数,中间用空格分隔。如下面的网格文件D:\files\output2.splx:
|
A |
B |
1 |
=file("D:\\files\\Data1.txt") |
=A1.import@t() |
2 |
for IDs |
>B1.modify(A2,Value:Amount) |
3 |
>A1.export@t(B1) |
|
文件中,使用了两个参数IDs和Value,如下:
这个网格的作用是读取刚刚得到的Data1.txt文件,修改指定序号的一些记录,使它们的Amount字段全等于设定的Value,并重新存入文件中。在运行时,屏幕上显示的执行情况如下:
调用网格文件output2.splx时,设入了两个参数,第一个是序列[2,3,5,7,11],第二个是整数99999。和跨网格调用时的情况类似,在用命令行调用文件时,设入的参数也是根据网格中参数的顺序依次赋值,而与参数名无关。在这里,[2,3,5,7,11]赋值给第1个参数IDs,99999赋值给第2个参数Value。在执行后,可以看到Data1.txt中的数据被修改:
本节剩余内容只与标准版或者企业版集算器有关,社区版产品的用户可以跳过。
如果使用的是企业版集算器,那么执行命令行时可以执行esprocx.exe来代替前面的esprocx.bat,如执行的无返回结果的文件:
如果执行文件时需要设入参数,和前面的情况类似,但参数不必用双引号括起来:
执行后生成随机数据文件的以及数据修改情况和前面介绍的类似,不再展示。
在命令行中直接用esprocx命令,缺省并不会在屏幕上输出结果。如果需要将脚本文件返回的结果显示出来,需要在执行时使用-R选项。首先,和用call函数调用的网格文件类似,在脚本文件中需要返回的数据,必须用return语句返回。如下面的网格文件D:\files\calculate1.splx:
|
A |
B |
1 |
=days(Day) |
=string(Day,"EEE") |
2 |
return A1 |
return B1 |
这个网格将返回给定日期所在的月的总天数,并计算出给定日期是星期几。使用了参数Day:
先来看看添加了-r选项后的执行情况:
在这里,运行的时候并未设定参数,此时将使用默认的参数即01/01/2000计算。同时可以发现,这里A2和B2中各自用return语句返回了一个结果,计算后会将结果依次列出。
如果准备设定参数,那么就要这个参数使用的是日期类型,日期或者时间类型的参数会涉及格式问题。在用命令行调用网格时,需要在集算器安装目录的esProc\config路径下配置文件raqsoftConfig.xml中,设置它们的格式:
<Esproc>
<dateFormat>yyyy-MM-dd </dateFormat>
<timeFormat>HH:mm:ss</timeFormat>
<dateTimeFormat> yyyy-MM-dd HH:mm:ss</dateTimeFormat>
</Esproc>
如果调用时设定参数,那么执行情况如下:
此时得到的就是2012年2月22日所在月的总天数,以及这天的星期。
下面的网格文件D:\files\calculate2.splx和前面的略有不同,将返回的结果构成了序列:
|
A |
B |
1 |
=days(Day) |
=string(Day,"EEE") |
2 |
return [A1,B1] |
|
执行情况如下:
可以看到,结果序列中的成员会依次列出,各占一行。
最后,再来看下面的网格文件D:\files\calculate3.splx:
|
A |
B |
1 |
$(demo) select * from CITIES |
$select * from STATES |
2 |
=A1.switch(STATEID,B1:STATEID) |
=A2.new(CID,NAME:City,STATEID.NAME:State) |
3 |
=B2.select(left(City,1)==Letter) |
|
4 |
return A3 |
|
网格中使用了一个参数Letter:
在这个网格中,使用了数据库中的数据。在这里使用的数据连接,需要在集算器安装目录的esProc\config路径下的raqsoftConfig.xml进行配置:
<DBList encryptLevel="0">
<DB name="demo">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="13"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="batchSize" value="1000"/>
<property name="autoConnect" value="true"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
</DB>
</DBList >
更具体的配置方法,请查看相关文档。
执行后,运行结果如下:
在设置字符串类型的参数时,直接设定即可,不用添加双引号。在上面的结果中,列出了首字母为B的城市信息。序表或者排列类型的结果,在显示时,每条记录占一行,各个字段之间用制表符分隔。
上面提到的配置文件raqsoftConfig.xml,是与IDE共用的,因此日期格式、数据源配置等信息,可以在IDE中编辑。在菜单栏中点击Tool>Option,即可在Option窗口的Environment中配置日期格式等信息。
点击Tool>Datasource connection,可以在数据源管理器中配置数据库连接参数等信息。具体的配置方法可以查看数据库配置。
在esprocx命令后添加-c选项,可以执行输入的一个网格脚本,网格脚本中,列用Tab分隔,行用回车分隔,脚本输入完毕后同时按下Ctrl+C结束输入网格并开始执行脚本。如:
执行esprocx –c后,在网格输入时输入了下面的脚本:
- [] >10.(A1=A1|#)
- >output(A1)
在网格脚本中,在A1的空序列中依次添加了10个数,并在第二行的脚本中将序列输出到控制台,按Ctrl+C完成输入后,得到后台的执行结果。
如果想查看执行网格脚本的结果,更常用的方式是添加-r选项,如:
执行esprocx –r –c时,将直接返回网格的计算结果,如果网格中没有return语句,将返回最后一个格值。
除了执行网格脚本,在命令行中还可以直接执行简单SQL,查询主目录中的数据文件,如:
通常情况下,执行简单SQL时,会同时使用-r选项。有关在命令行中能够执行的简单SQL请阅读简单SQL,如果查询数据库中的数据,需要在raqsoftConfig.xml中完成配置。。
在Linux系统中,同样可以使用命令行,使用时与在Windows系统中类似,不同的是调用的命令是esprocx.sh,如运行无返回结果的网格文件output1,如下:.
为了看到更细致的信息,这里使用了DEBUG日志级别,可以看到,输出结果和在Windows中的情况完全相同。
其它执行命令行的情况都是类似的。如执行返回结果的calculate1.splx:
如果需要传递参数,则在调用网格文件名后添加参数即可:
在Linux系统中,同样可以添加-c选项执行网格脚本,但是与在Windows系统中执行时有所不同,注意此时结束脚本输入开始执行时,需要用Ctrl+D确认,如:
同样,在添加-r选项后,可以用看到return所返回的结果:
在Linux系统中,也可以执行简单SQL,情况如下: