命令行

阅读(457) 标签: 命令行调用, esprocx, 执行程序,

命令行是指在类似于DOS中,用字符串形式的命令来执行程序。各类系统都支持命令行的使用,如Linux系统的控制台,或者Windows系统的command窗口等。

用命令行来计算集算器网格文件时,需要使用esprocx.exe文件,在集算器安装目录的esProc\bin路径下,可以找到。

无返回结果的网格文件

在命令行执行网格文件使用esprocx命令即可。如下面的网格文件D:\files\output1.dfx

 

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)

无返回结果的文件,往往用来读写文件或数据库。如这个网格中,创建了一些模拟数据,存储到文本文件Data1.txt中。使用时,只需在esprocx后面指明需要执行的dfx文件。执行时,屏幕上会显示开始执行以及结束执行的消息,如下:

执行后,生成的随机数据会写入Data1.txt文件,如下所示:

如果esprocx文件所在路径被设入了操作系统的path列表,可以直接运行esprocx,而不必在安装目录的esProc\bin路径下。但是,调用的dfx文件必须指明全路径,或者要位于当前路径中,如:

 

如果运行的网格文件中,使用了参数,那么在执行esprocx时,在dfx文件名后输入参数,中间用空格分隔。如下面的网格文件D:\files\output2.dfx

 

A

B

1

=file("D:\\files\\Data1.txt")

=A1.import@t()

2

for IDs

>B1.modify(A2,Value:Amount)

3

>A1.export@t(B1)

 

文件中,使用了两个参数IDsValue,如下:

这个网格的作用是读取刚刚得到的Data1.txt文件,修改指定序号的一些记录,使它们的Amount字段全等于设定的Value,并重新存入文件中。在运行时,屏幕上显示的执行情况如下:

调用网格文件output2.dfx时,设入了两个参数,第一个是序列[2,3,5,7,11],第二个是整数99999。和跨网格调用时的情况类似,在用命令行调用文件时,设入的参数也是根据网格中参数的顺序依次赋值,而与参数名无关。在这里,[2,3,5,7,11]赋值给第1个参数IDs99999赋值给第2个参数Value。在执行后,可以看到Data1.txt中的数据被修改:

需要返回结果的网格文件

在命令行中直接用esprocx命令,缺省并不会在屏幕上输出结果。如果需要将dfx文件返回的结果显示出来,需要在执行时使用-R选项。首先,和用call函数调用的网格文件类似,在dfx文件中需要返回的数据,必须用return语句返回。如下面的网格文件D:\files\calculate1.dfx

 

A

B

1

=days(Day)

=string(Day,"EEE")

2

return A1

return B1

这个网格将返回给定日期所在的月的总天数,并计算出给定日期是星期几。使用了参数Day

先来看看添加了-R选项后的执行情况:

在这里,运行的时候并未设定参数,此时将使用默认的参数即01/01/2000计算。同时可以发现,这里A2B2中各自用return语句返回了一个结果,计算后会将结果依次列出。

如果准备设定参数,那么就要这个参数使用的是日期类型,日期或者时间类型的参数会涉及格式问题。在用命令行调用网格时,需要在集算器安装目录的esProc\config路径下配置文件raqsoftConfig.xml中,设置它们的格式:

<Esproc>

  <dateFormat>MM/dd/yyyy</dateFormat>

  <timeFormat>HH:mm:ss</timeFormat>

  <dateTimeFormat>MM/dd/yyyy HH:mm:ss</dateTimeFormat>

</Esproc>

如果调用时设定参数,那么执行情况如下:

此时得到的就是2012222日所在月的总天数,以及这天的星期。

 

下面的网格文件D:\files\calculate2.dfx和前面的略有不同,将返回的结果构成了序列:

 

A

B

1

=days(Day)

=string(Day,"EEE")

2

return [A1,B1]

 

执行情况如下:

可以看到,结果序列中的成员会依次列出,各占一行。

 

最后,再来看下面的网格文件D:\files\calculate3.dfx

 

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>

<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="HSQL"/>

  <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"/>

  <property name="dbCharset" value="GBK"/>

  <property name="clientCharset" value="GBK"/>

  <property name="needTransContent" value="false"/>

  <property name="needTransSentence" value="false"/>

  <property name="caseSentence" value="false"/>

</DB>

</DBList >

更具体的配置方法,请查看相关文档。

执行后,运行结果如下:

在设置字符串类型的参数时,直接设定即可,不用添加双引号。在上面的结果中,列出了首字母为B的城市信息。序表或者排列类型的结果,在显示时,每条记录占一行,各个字段之间用制表符分隔。

 

上面提到的配置文件raqsoftConfig.xml,是与IDE共用的,因此日期格式、数据源配置等信息,可以在IDE中编辑。在菜单栏中点击Tool>Option,即可在Option窗口的Environment中配置日期格式等信息。

点击Tool>Datasource connection,可以在数据源管理器中配置数据库连接参数等信息。具体的配置方法可以查看4.2数据库配置