IBMiにsshで接続し、qshを起動すると、実行しdb2 -S "SELECT * FROM LIB.SOMEPF"
て結果を得ることができます。デフォルトのPASE画面からは実行できません。
$ /usr/bin/db2
/usr/bin/db2: cannot execute
QSH を起動する代わりに、PASE から SQL クエリを実行することは可能ですか?
答え1
私のホーム ディレクトリに db2 シェル スクリプトがあります。長い間そこにあったため、いつ、どのようにしてそこに置かれたのかはわかりません。5799-PTL の一部である可能性があります。役に立たないことは承知していますが、内容は次のとおりです。
ls -al db2
-rwxr-xr-x 1 buck 0 646 Jul 02 2013 db2
$
cat db2
#!/QOpenSys/usr/bin/ksh
# map base name "qsh_inout" to "qsh" (just run the interpreter)
basename=${0##*/}
if [[ "$basename" = qsh_inout ]] ; then
basename=qsh
fi
args=''
for temp ; do
args="$args'"
# double embedded quotes halved by CL CALL
while [[ "$temp" = *\'* ]] ; do
args="$args${temp%%\'*}''"
temp="${temp#*\'}"
done
args="$args$temp' "
shift
done
# Copy environment variables, call utility in this process,
# do not process OS/400 messages or spooled output files
exec /QOpenSys/usr/bin/system -eiqs "CALL QSYS/QP0ZCALL ('/usr/bin/$basename' $args)"
CALL QP2TERM
次に、db2 コマンドを発行すると、db2 -S 'select * from datesample'
このスクリプトが実行されます。