Return to ox.sm1 CVS log | Up to [local] / OpenXM / src / kan96xx / Doc |
version 1.12, 2000/12/03 08:19:54 | version 1.22, 2003/01/01 02:03:41 | ||
---|---|---|---|
|
|
||
%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.11 2000/02/02 02:03:42 takayama Exp $ | %%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.21 2002/11/08 14:18:00 takayama Exp $ | ||
/ox.sm1.loaded 1 def | |||
%%%%%%%%%%%% Configuration: Specify your server path | %%%%%%%%%%%% Configuration: Specify your server path | ||
%%%%% ox, ox_sm1, oxlog are contained in kxx.tgz | %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz | ||
%%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH | %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH | ||
|
|
||
oxpath.oxlog.xterm message | oxpath.oxlog.xterm message | ||
} def | } def | ||
/ox.ccc.init { ox.ccc ( [(oxPrintMessage) 0] extension pop ) oxsubmit } def | /ox.ccc.init { | ||
ox.ccc ( [(oxPrintMessage) 0] extension pop ) oxsubmit | |||
(Ox103_loaded) boundp | |||
{ ox.ccc ox103_sm1_init } | |||
{ } ifelse | |||
} def | |||
/ox.verbose 0 def | /ox.verbose 0 def | ||
/ox.version (2.981105) def | /ox.version (2.981105) def | ||
|
|
||
(Please get it from http://www.math.kobe-u.ac.jp/KAN) message | (Please get it from http://www.math.kobe-u.ac.jp/KAN) message | ||
error | error | ||
} { } ifelse | } { } ifelse | ||
(ox.sm1, --- open sm1 protocol module 11/11,1999 (C) N.Takayama. oxhelp for help) message-quiet | (ox.sm1, ---OpenXM protocol module 08/22, 2001 (C) N.Takayama. oxhelp for help) message-quiet | ||
/ox.ccc load isArray | /ox.ccc load isArray | ||
{ } | { } | ||
|
|
||
/SM_control_kill 1024 def | /SM_control_kill 1024 def | ||
/SM_control_reset_connection 1030 def | /SM_control_reset_connection 1030 def | ||
/SM_control_spawn_server 1027 def | |||
/Etag_error 257 def | /Etag_error 257 def | ||
|
|
||
(oxpopcmo1, oxpopcmo2, sm1connect2, sm1connect3) | (oxpopcmo1, oxpopcmo2, sm1connect2, sm1connect3) | ||
(sm1connectr ox_launch, ox_launch_nox) | (sm1connectr ox_launch, ox_launch_nox) | ||
(oxNoX : set an environment to invoke oxlog without xterm and to call oxlog with >& /dev/null) | (oxNoX : set an environment to invoke oxlog without xterm and to call oxlog with >& /dev/null) | ||
(oxresetAll, oxIsInterruptable, [(oxGetClientList)] extension ) | |||
$ ex 1. (ox.sm1) run oxNoX sm1connectr $ | $ ex 1. (ox.sm1) run oxNoX sm1connectr $ | ||
$ ex 2. (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $ | $ ex 2. (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $ | ||
] | ] | ||
|
|
||
/oxreset { | /oxreset { | ||
/arg1 set | /arg1 set | ||
[(oxReq) arg1 SM_control_reset_connection] extension pop | [(oxReq) arg1 SM_control_reset_connection] extension pop | ||
[(oxGetFromControl) arg1 ] extension pop | %% [(oxGetFromControl) arg1 ] extension pop | ||
[(oxGet) arg1] extension message | [(oxGet) arg1] extension message | ||
} def | } def | ||
|
|
||
} def | } def | ||
%% Test code for oxCreateControl_RFC_101 | %% Test code for oxCreateControl_RFC_101 | ||
/sm1connect101 { | /sm1StartControl101 { | ||
[/in-sm1connectr /pass /peer /data /control ] pushVariables | [/in-sm1connectr /pass /peer /data /control ] pushVariables | ||
[ | [ | ||
/pass [(oxGenPass)] extension def | /pass [(oxGenPass)] extension def | ||
/peer [(oxGetPort) (localhost)] extension def | /peer [(oxGetPort1) (localhost)] extension def | ||
/peer [ peer 0 get peer 1 get ] def %% BUG, close the rest. | |||
/data peer 1 get toString def | /data peer 1 get toString def | ||
peer message | peer message | ||
[(/home/nobuki/OpenXM/src/oxc/oxc) | [(/home/nobuki/OpenXM/src/oxc/oxc) | ||
|
|
||
popVariables | popVariables | ||
} def | } def | ||
initializePathNamesForOx %% This should be | /sm1StartEngine101 { | ||
[/in-sm1StartEngine101 /peer /data /control /engineID] pushVariables | |||
[ | |||
/peer [(oxGetPort1) (localhost)] extension def | |||
/data peer 1 get def | |||
ox.ccc data oxpushcmo | |||
ox.ccc (/home/nobuki/OpenXM/bin/ox_sm1) oxpushcmo | |||
[(oxPushCMD) ox.ccc SM_control_spawn_server] extension | |||
ox.ccc oxpopcmo /engineID set | |||
[(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension | |||
/ox.ddd set | |||
(The engine is binded to the variables ox.ddd) message | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
/OxWorkDirCreated false def | |||
/oxWorkDir { | |||
[/in-oxWorkDir /workHome /work] pushVariables | |||
[ | |||
[(getenv) (OpenXM_tmp)] extension tag 0 eq { | |||
/workHome [ | |||
[(getenv) (HOME)] extension | |||
(/OpenXM_tmp) | |||
] cat def | |||
}{ | |||
/workHome | |||
[(getenv) (OpenXM_tmp)] extension | |||
def | |||
}ifelse | |||
/work [workHome (/) [(getpid)] extension toString] cat def | |||
OxWorkDirCreated not { | |||
[(stat) workHome] extension 0 get tag 0 eq { | |||
[(Working directory ) workHome ( will be created.)] cat | |||
message | |||
[(mkdir ) workHome] cat system | |||
}{ | |||
} ifelse | |||
[(stat) work] extension 0 get tag 0 eq { | |||
[(Working directory ) work ( will be created.)] cat | |||
message | |||
[(mkdir ) work] cat system | |||
}{ | |||
} ifelse | |||
/OxWorkDirCreated true def | |||
}{ } ifelse | |||
/arg1 work def | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
[(oxWorkDir) | |||
[(oxWorkDir returns a name of working directory for OpenXM processes.) | |||
(If the working direcotry does not exist, it creates ~/OpenXM_tmp/[pid].) | |||
(The name can be changed by setting a value to the environmental variable) | |||
(OpenXM_tmp. cf. oxNewFileName) | |||
] | |||
] putUsages | |||
/OxFileName 0 def | |||
/oxNewFileName { | |||
[/in-oxNewFileName /name] pushVariables | |||
[ | |||
/name [(work) OxFileName toString] cat def | |||
/OxFileName OxFileName 1 add def | |||
/arg1 name def | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
[(oxNewFileName) | |||
[(oxNewFileName returns a unique file name for a working file.) | |||
(cf. oxWorkDir) | |||
] | |||
] putUsages | |||
/ox_get_os { | |||
[/in-ox_get_ox /os1 /os2] pushVariables | |||
[ | |||
/os1 [(ostype)] extension 0 get def | |||
os1 (windows) eq { | |||
[(getenv) (WINDOWID)] extension tag 0 eq not { | |||
%% expect cygwin X | |||
/os2 (xcygwin) def | |||
}{ | |||
[(getenv) (OSTYPE)] extension tag 0 eq not | |||
[(getenv) (MACHTYPE)] extension tag 0 eq not or | |||
[(getenv) (PWD)] extension tag 0 eq not or | |||
{ | |||
%% expect cygwin environment | |||
/os2 (cygwin) def | |||
}{ | |||
%% expect the native windows environment | |||
/os2 (native) def | |||
} ifelse | |||
} ifelse | |||
}{ | |||
/os2 null def | |||
} ifelse | |||
/arg1 [os1 os2] def | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
/ox.ostype ox_get_os def | |||
/ox_backslash_to_slash { | |||
/arg1 set | |||
[/in-ox_backslash_to_slash /sss ] pushVariables | |||
[ | |||
/sss arg1 def | |||
sss (array) dc /sss set | |||
sss { dup 92 eq { pop 47 } { } ifelse } map | |||
{ (string) dc } map cat /arg1 set | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
/ox_slash_to_backslash { | |||
/arg1 set | |||
[/in-ox_slash_to_backslash /sss ] pushVariables | |||
[ | |||
/sss arg1 def | |||
sss (array) dc /sss set | |||
sss { dup 47 eq { pop 92 } { } ifelse } map | |||
{ (string) dc } map cat /arg1 set | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
/oxIsInterruptable { | |||
/arg1 set % Client Object | |||
[/in-ox_get_server_name /mcap /ans /sname] pushVariables | |||
[ | |||
/mcap arg1 def | |||
/ans 0 def | |||
mcap tag 6 eq { | |||
mcap 10 get tag 6 eq { | |||
mcap 10 get 1 get 0 get 1 get /sname set | |||
}{ /sname ( ) def } ifelse | |||
}{ | |||
/sname ( ) def | |||
} ifelse | |||
(ox_sm1) sname isSubstr -1 eq { | |||
} { /ans 1 def } ifelse | |||
(ox_asir) sname isSubstr -1 eq { | |||
} { /ans 1 def } ifelse | |||
/arg1 ans def | |||
] pop | |||
popVariables | |||
arg1 | |||
} def | |||
/oxresetAll { | |||
[(oxGetClientList)] extension | |||
{ dup oxIsInterruptable { oxreset } { pop } ifelse } map | |||
} def | |||
/oxrpc2 { | |||
/arg2 set | |||
/arg1 set | |||
[/in-oxrpc2 /pid /n /comm /i] pushVariables | |||
[ | |||
/pid arg1 def | |||
/comm arg2 def | |||
/n comm length def | |||
n 1 sub -1 1 { | |||
/i set | |||
pid comm i get oxsendcmo | |||
} for | |||
pid n 1 sub oxsendcmo | |||
pid comm 0 get oxexec | |||
] pop | |||
popVariables | |||
} def | |||
[(oxrpc2) | |||
[(Remote procedure call by using oxexec) | |||
(client [function-name arg1 arg2 ...] oxrpc2 ) | |||
(cf. ox-cmo-rpc in Risa/Asir) | |||
(Example: ) | |||
$ (oxasir.sm1) run (x^2-1). fctr $ | |||
(oxasir.ccc [(igcd) (6).. (10)..] oxrpc2) | |||
(oxasir.ccc oxpopcmo :: ) | |||
] | |||
] putUsages | |||
[(ostype)] extension 0 get | |||
(windows) eq { | |||
(ox-win.sm1.loaded) boundp { | |||
}{ | |||
[(parse) (ox-win.sm1) pushfile] extension | |||
} ifelse | |||
}{ | |||
initializePathNamesForOx %% This should be | |||
} ifelse |