Ajit Nair
Ajit Nair

Reputation: 455

How can I perform some commands on Intersystem cache from shellscript?

I want to perform some commands on Intersystem cache from shell script. One solution which I know is through making a config file but the problem is I dont know how to use config file through shell script. Is there any other solution for this...

for example what I have to run on cache is

csession instancename
zn "area"
area>D ^%RI
Device:some/device/path
Next: It should take enter

Upvotes: 0

Views: 4620

Answers (3)

Abid Khan
Abid Khan

Reputation: 309

This is a very old question .. as I came across the same thing and so with a little R&D I found a work around to this problem. Which is very cool and simple.

Let's say I have this file (can be with any extension with each command in separate line)

myScript.scr

     zn "%SYS"
     for e="a","b","c" { w e,! }

So passing it to cache terminal in case of UNIX is using csession with linux PIPE (|) operator

cat myScript.scr | csession {instance_name}

Eg.

cat myScript.scr | csession CACHE

output

     a
     b
     c

Note:

• Don't separate a command in multiple lines else `csession` will through <SYNTAX> error. (See how I wrote the *for* loop)
• Extra knowledge - Intersystem Ensemble supports *Cache Terminal Batch Mode* in Windows case... While in linux there is no cterm to take the scripts.. 
• But linux gives you a work around to do this ;).

Hope this helps you guys!! cheers :D

Upvotes: 0

joebeeson
joebeeson

Reputation: 4366

This can be accomplished from a Linux shell, simply keep a log of the commands you need to perform and then put them into a script. Here's an example of logging into Cache and writing "Hello world" -- note that this also assumes you need to authenticate.

echo -e "username\npassword\nW \"Hello world\"\nH\n" | csession instance

Note that every command you would have run manually is in there and separated by "\n", this is the character that represents the "Enter" key.

Upvotes: 1

psr
psr

Reputation: 2900

It is possible (for some operating systems) to run the Cache terminal in batch mode. For example:

echo: off
wait for:Username
send: SYS<CR>
wait for:Password
send: XXX<CR>
echo: on

logfile: Somepath\myFile.log

send: ZN "AREA"
wait for:AREA>

send: D ^%RI
wait for:Device:
send: some/device/path
wait for:Next:
send: <CR>

This is documented in the Intersystems cache terminal documentation, especially the using terminal in batch mode section and the terminal scripts section.

Upvotes: 0

Related Questions