OS/2 WARP Tips & Tricks

Altair☆'s Pageに戻る by Altair☆
更新: 2000年 6月 4日
このページでは、OS/2 WARPのTips & Tricksを紹介します。

OS/2のFile Libraryに、ちょっとした自作freewareを公開しています。また、別にOS/2用ソフトウェア・パッケージのインストールについてという文書も用意しておりますので、そちらも参照してみてください。



DIR /V

DIR commandの/V optionは、もう御存じですよね? ご存じない方は試してみてください。もちろん、環境変数にset DIRCMD=/Vと設定することもできます。

DOS sessionでも指定できます。(^_-)


Folderを閉じてobjectを…

Folderの中のfolder iconを開く時に、特にそうなりがちなのですが、いつの間にか用済みのfolderがdesktop上に散在してしまうことがあります。

Folderの中のobjectをmouse clickする際に、Shift keyを押しながらdouble clickすると、そのobjectを開いてから、folderを自動的に閉じてくれます。意外に知らない人、多いんですよね、これ。

但し、folderのpropertyによっては、Shiftを押す前に、single clickで対象のobjectを選んでおいてから、これを行わないと、既に選択されているobjectからdouble clickされたobjectsの全てが開かれてしまうなんてことも起こるので、要注意かも。通常のfolderでは滅多にないけどね。(例えば、始動folderはマルチカラムに設定されているので、要注意)。


Microsoft Internet Explorerを使う

Microsoft Internet ExplorerにはOS/2版がありませんから、Windows 3.1用のものをWin-OS/2環境で利用することになります。

ところが、私が利用しているOS/2 WARP J4.0では、動作はするものの「WASAAsyncSelect( ) unable to locate CB for this socket!」というerror messageが出てしまいました。

これは、IBMのPSS Fixpak Library[1]にアクセスし、英語版のTCP/IP (os2ディレクトリではなくtcpipディレクトリです)のDOSBOXのfixの最新版を入手することで解決できました。

Internet Explorerに限らず、DOSやWin-OS/2環境で何らかの不具合がある場合には、試してみる価値があるかもしれません。

備考:
上の説明は1997年 5月に公開されたMicrosoft Internet Explorer Versoin 3.02a.2916について述べています。また、PSS Fixpack Libraryも同じ時期にaccessしました。将来のversionやfixに於て、同じ結果を得られる保証はありません。

3 buttons mouse

私の持っている3 buttons mouseの多くは、button 3のclickがbutton 1 (default設定では左)とbutton 2 (defaultでは右)の同時clickとして働くようです。

例えば、Mouse操作でtask listを表示するには、button 1とbutton 2を同時clickしますが、代わりに、button 3 (中央)をclickしても良いものがあるようです。

注)
OS/2 WARPは、3 buttons mouseを正式にはsupportしていません。

¥キーをPC-DOS (英語) sessionでも利用する

日本語版OS/2でも、PC-DOS sessionでは¥キーが効きません。これを効くようにするオマジナイがあります。

KEYB JP,437

KEYBは、\OS2\MDOS directoryにあるTSRで、約5 KByteのmemoryを消費します。もし、DOS_UMB設定をonに(あるいはconfig.sysで、DOS=UMBを指定)しているなら、LH KEYB JP,437とし、UMBにKEYBが常駐するようにしても良いでしょう。

DOS/V sessionでKEYBを常駐させると、英語環境とは逆に、\キーを¥として利用できるようになります。この場合には、KEYB JP,932で常駐させます。

注)
コードページ850 (latin-1)を使用している時には、KEYB JP,850を指定するのが正しいように思えるのですが、invalid code page specifiedエラーになってしまいます。使用コードページが850である場合でも、KEYB JP,437の指定はエラーになりませんし、私が実際に使ってみた限り問題はないようです。

全画面Win-OS/2のloading message

全画面Win-OS/2を起動すると『ロード中です。お待ちください...』というmessageが表示されますが、それに先行してdefault prompt『C:\>』が表示されてしまうため、『C:\>ロード中です…』になってしまいます。実害はありませんが、なんとなく変な感じです。

Win-OS/2を起動するDOS_AUTOEXECで、

prompt $s
としておけば、邪魔な『C:\>』を表示しないようにできます。

$sはprompt commandに於て、単なる空白文字を意味します。ESC sequenceを使っているわけではないので、ansi.sysは不要です。


lessやlynxをcolor画面にする

lessやlynxを始めとする、UNIXから移植されたapplicationsの多くが、termcapと呼ばれるterminal independent operation routineとterminal capability data baseを使用します。

UNIXからのsoftwareの移植にはemxが利用されるので、そのrun-time packegeをinstallしておられるOS/2 usersのかたも多く、たいてい、

SET TERM=mono
SET TERMCAP=D:/emx/etc/termcap.dat
と設定なさっているようです。

TERM=monoの代わりに、TERM=ansiと環境変数を設定すれば、カラフルな文字表示をできるようになります。


UNIXから移植されたsoftwareのmanを読む

PCとUNIXの文化の違いにより、PCしか使ったことがない人がUNIXから移植されたsoftwareを使う際に、障害となるのがmanualの記載方法の違いです。少なくとも私が、このpageや、HTML Tips & Tricksのpageで紹介しているsoftwareのmanualのほとんどが、普通のPC環境のtext browserやtext editorでは読めません。(^^;

OS/2用に移植されたsoftwareに添付されているmananualは、何通りかあるようです。

  1. Plain text … ごく普通のtext browserやtext editorで読むことができます。
  2. 書体をback spaceで変化させているもの … emxのbsd/man directoryの下にあるfilesがそれに該当します。Type commandやmore (OS/2本来のもの、j_pocketのaixlikeにあるmoreではない)なら読むことができますが、書体の変化はありません。一般的なtext browserやtext editorでは、意味はわかるかも知れませんが、非常に読みにくくなります。less[3]で読むことができます。(^_-)
  3. nroffが必要なもの … ほとんどの場合がこれに該当します。tmf[2]とlessを併用すると良いでしょう。OS/2用に移植されたnroffとmanもありますが、UNIXに慣れ親しんでいない人にはinstallがそう簡単ではないようです。tmfはそんな人への福音です。
    例:
    tmf -l0 foo.man | less
  4. TeXinfo & Info … emxのpackageにも含まれているGNU productで、info browserで閲覧可能です。拡張子は .infoか .infが一般的。拡張子 .texのTeXinfo fileは、makeinfoでinfo形式に変換できます。
  5. 上記以外のもの … HTMLや、親切にもIPF (← OS/2のコマンド解説書などと同じ形式)、そして何故かWord Document (UNIX版Wordなんてあるの?)も見かけます。

man pageは、gzipで圧縮されていることもあります。そのような時にはzcat (ふつう、gzipへのsymbolic linc)を併用すればokです。また、unix環境で書かれた日本語のman pageの多くはEUCコードで書かれていることが多く、tmfはEUCをうまく扱えませんので、さらにnkfの併用も必要になるでしょう。

REXXやPerlのscriptingに慣れているかたであれば、man fooとtypeした時に、/emx/bsd/manや/usr/local/manにあるfoo.*を探し出し、さらに見つけたfileの最初の行を判別し、lessやtmf、infoを自動的に起動するようなscriptをman.cmdとして用意しておくと便利かも知れませんね。

なお、OS/2用で本格的なman page systemを構築したければ、沢田石 順さんが公開されています[5]


Perlをコマンドプロセッサとして使う

OS/2環境の標準的なscript言語にはREXXがありますが、UNIXを中心とする様々な環境で広く利用されているscript言語としてPerlがあり、その処理系はOS/2にも移植されています。

Perl処理系のinstallは簡単で、archiveに添付されたdocumentどおりに作業すれば、Perlで書かれた多くのsoftwareを利用できます。

ここでは、Perlで書かれたsoftware (名前を『foo』と仮定します)をOS/2の『foo.cmd』に変換する方法の一例を簡単に紹介します。Perl処理系はD:\PERL5\perl5.exeとして話しを進めます。あなたが使う環境に合わせて読み替えてください。

これで、コマンドラインから『perl5 foo』の代わりに『foo』と入力できるようになります。(^_-)

extprocの詳細については、OS/2 WARPコマンド解説書(WARP 4では、デスクトップの『アシスタンス・センター』『情報』の下にあります)を、Perlについては、お持ちの処理系のドキュメントを参照してください。


Unixのshell scriptを使う

OS/2には、bashやtcshなどが移植されているので、Unix用に書かれたshell scriptも使うことができます。

/bin/shは、bashを流用すればok。cshはtcshを流用すればok。hobbesにあるbashの最新版のInstallationドキュメントは懇切丁寧に書かれているので、ここで解説すべきことはあまり残っていません。

Shell scriptを意識せずに、CMDファイルとして利用するには、拡張子を.cmdにして、先頭の行を、例えば“#! /bin/sh”だったら、それを“extproc X:\usr\bin\bash.exe”などと書換えます。これで、shell scrtipがコマンド・プロンプトから起動できるようになります。

ところが、このままでは、“bash: extproc: command not found”などといわれてしまうので、bashやtcshのpathの通ったディレクトリで、

echo #!X:/usr/local/bin/bash > extproc
として、ダミーの何もしないextprocを作っておくと良いでしょう。

extprocは、CMD.EXE内部で普通のコマンドとは異なった処理方法を採られているようで、行頭の‘@’を付けるとうまく働かないので注意してください。また、shell scriptの途中に現れる“#!”は、おそらく既にbashやtcshの制御下で実行されますから“extproc”に置き換えてはいけません。

備考:
/bin/shの代わりに、上の説明ではbashを使うことにしましたが、bash以外には、pdkshも利用なさっている人が多いようです。

less / jlessで、bzip2圧縮されたテキストをブラウズ

例えば以下のようなREXXスクリプトを書いて、あとはコメントに従って環境変数LESSOPENを設定しておけばok。

なお、1998年12月17日以降に、私のOS/2のFile Libraryで公開しているjless (novio6以降)では、このようなREXXスクリプトの指定無しで、bzip2で圧縮されたテキスト・ファイルに対応しています。(^_-)

/*
* This is a preprocessor for 'less'
* in OS/2 REXX by NBG01720@nifty.ne.jp
*
* It is used when this environment variable is set:
*      set LESSOPEN=|lesspipe.cmd %s
* To set above value from command prompt, type:
*      set LESSOPEN=^|lesspipe.cmd ^%^s
* To set it in batch file and/or CONFIG.SYS, describe:
*      set LESSOPEN=^|lesspipe.cmd %%s
*/
parse arg s; n='2>nul'
select
  when c('.tar')then
    '@tar tvf' s n
  when c('.tgz')|c('.tar.gz')|c('.*.tar.Z')then
    '@tar tzvf' s n
  when c('.tar.bz2')then
    /* This one works for the unmodified version of tar: */
    '@bzip2 -cd' s n '| tar tvf -'
    /* This one works with the patched version of tar:   */
    /*  '@tar tyvf' s n' or
     *  '@tar tIvf' s n'
     */
  when c('.zip')then
    '@unzip -l' s n
  when c('.LZH')then
    '@lha v' s n
  when c('.bz2')then
    '@bzip2 -dc' s n
  when c('.Z')|c('.gz')then
    '@gzip -dc' s n
  otherwise
    '@type' s n
end
exit

c: arg d
  return d=translate(right(s,length(d)))

XFree86を動かしたままOS/2デスクトップに帰る

XFree86を動かしたままOS/2デスクトップに帰るには、Alt-EscとかCtrl-Escを押して戻る手段がありますが、EscよりAltやCtrlを先に離さないと、XFree86に戻った時に、そのシフト・ステータスが残っていて、意図したのとは異なるキー・コードが入力されてしまうことがあります。

そこで、適当なアイコンにOS/2デスクトップに戻る機能を割り付け、そこをマウスでクリックすることが考えられます。

これを実現するのに適当なショート・プログラムが、nyaosの作者である はやまさんのホームページ[4]に公開されているpmjobsです。これを使うと『pmjobs デスクトップ』で、OS/2デスクトップに戻れますから、あとは、適当なアイコンを作って、ボタンに割り付けるだけ。

ここでは、fvwm2をXFree86のwindow managerとして使っている場合に.fvwmrcに記述すべき定義の例を紹介します。

*FvwmButtons "OS/2 PM" desktop.xpm Exec pmjobs デスクトップ

fvwm2のバージョンによっては、

*FvwmButtons OS/2 desktop.xpm Exec "" pmjobs デスクトップ

これで、desktop.xpm (.xpmというのは、X window用の画像フォーマットの一種)をアイコンとした“OS/2 PM”ボタンに、OS/2デスクトップに戻る機能を定義できます。

FvwmButtonsの使い方や、他のwindow managerでの定義方法は、それぞれのwindow managerのman pagesをご覧ください。…て、ちょっと不親切かな? (^^;


関連URL

[1]
IBM; PSS Fixpak Library
[2]
Vector Designeのos2/util/text/format directory
[3]
Altair☆'s OS/2 File Library
[4]
はやまかおる; はやまったホームページ
[5]
沢田石 順; Free Softwares ported to OS/2

Altair☆'s Page   いやはやまった Copyright (c) 1995-2002 by Altair☆ <NBG01720@nifty.ne.jp>
All rights reserved. 無断転載厳禁