F-Basic Programming Life!

トップに戻る

F−Basicとは、富士通ミドルウェア株式会社が開発したBasic言語です。現在でもF−Basicは販売されていますが、あまりに認知度が低くDOS継続プログラミングばかりが表に出過ぎています。F−BasicはVisualBasicと違いDOSと同じ様なプログラミング方法も出来ますしVisualBasicの様なイベント駆動型プログラミングも出来ます。

F-Basicには興味が無い、またはVBを使っているからF-Basicは・・・と思われる方はあまり面白くないページなのでトップページをオススメします。

富士通F−Basicのページはこちらから

F−BasicはDOSと同じ様な手続き型プログラミングが出来るという利点で言えば、他の同類言語に比べ全てにおいて勝っていると思います。QuickBasicの様に複数のモジュールをリンク出来る点ではF−Basic以外に存在しない、擬似的には可能でも完全に独立したモジュール同士のリンクとなればF−Basic以外に無いとも言えます。特に大型の業務APをDOSと同じ様な手続き型で組む場合は複数のライブラリを使用する必要がありますが、擬似的なリンクでは絶えられない部分もあり忠実にDOSと同じ様な動作が行えるのもF−Basicならではと思います。

富士通ミドルウェア社はF−Basicの開発を打ち切っている様で、F−Basic V7.0は到底発売される予定も無さそうです。特にXPへの標準対応はF−Basicの構造を大きく変える必要がある為、開発を打ち切ったとも思えますが、であるならばU004(XP動作可能なランタイム&コンパイラ)が出ればいいな〜と思います。実際、「F-Basic V6.3 XP対応化作戦U」を作成してF−BasicのXP標準対応に無理がある事も痛切に感じXPへの標準対応を富士通ミドルウェア社が断念した理由も分かりますが、動作レベルでの対応でも欲しい所です。


F-Basicコンパイル後のゴミを削除したい


F-Basicでプログラムを作り、コンパイルすると必ず作成されるファイルに「Obj」、「Mk2」、「Lib」、「Exp」などがあります。また、編集後の更新を行うと「Bak」まで作成されます。もちろん、これらのファイルはコンパイルを行う上でどうしても必要な上、一旦削除すると再度コンパイルする際は全てのプログラムを再コンパイルする為、非常に長い時間がかかります。

しかし、プログラムのソースをバックアップする際にこれらのファイルまでバックアップすると大量の容量を消費する為、MOやCD−Rといったメディアへの保存にも無理が生じる場合もあります。(私の場合はソースだけで900MBを超えています)

その様な理由からF-Basicのコンパイラが吐き出すゴミを削除するツールを作成しました。このツールは指定したドライブ内のF-Basicが吐き出すと思われるファイルを削除するツールですが、右図の様に個々のファイル形式に対し削除するか否かを設定できる様にしています。

また、プログラム側で作成するゴミファイルと想定される2つのファイル形式(Tmp、Dat)も同時に削除する事が出来ます。このファイル形式は個人的な理由でこのファイル形式を採用しておりますが、変更が必要な方はプログラムソースを修正する事ができます。

ツールを作成する上で、通常はWindowsXPでの利用も考え一旦作成したプログラムに「F-Basic XP対応化作戦U」でリソースの修正と追加プログラムの呼出を行いますが、最近その対応に少々無理が生じている様に思えましたので、本ツールはこれらを使わず画面処理をGSXGUIによって制御しています。



F-Basic ゴミファイル削除ツールはこちらからダウンロードできます。

F-Basic ゴミファイル削除ツールのプログラムソースはこちらからダウンロードできます。


F-Basicにも解析ツールが欲しい


F-BasicはVisualBasicに比べ、何かとツール群も少なく開発には苦労します。せめてF-Basicにも解析ツールがあれば、という事で「ザ・プログラム解析」のF−Basic/ActiveBasic特化版を作成しました。このソフトはフリーですがソースは添付しておりません。

イベント駆動型や自作ライブラリなどをプログラミングしたまでは良いが、かなりの時間が経過し処理そのものを忘れたという場合などに役立つツールだと思います。F-Basicは元々イベント駆動もサポートする言語であるにも関わらず、その認識が少ないのか一般には従来型Basicのイメージが強い様です。また、ActiveBasicに関してはV2.50以降からイベント駆動の様なメッセージ処理を自動生成する機能が付加されています。

プログラムを作るだけ作って、いざ問題が発生した時に解析ツールが無い場合とある場合では大きな違いです。単体テストレベルでの簡単なバグ取りでは何らこの様な解析ツールを使う必要もありませんがフォームを最大(16枚)まで使いきったり、GsxGUIなどの画面ライブラリを利用し中規模の処理を作成した場合、結合レベルや運用レベルでデータの整合性などが問題でトラブルが発生する事が少なくありません。

ザ・プログラム解析 For VisualBasicとの相違点は、本ツールでは仕様書形式での印刷が出来ません。仕様書印刷については「ザ・モジュール仕様書(フリー版)」を利用するか「ザ・プログラム解析 For VisualBasic」を利用する事で仕様書の印刷が可能となります。

また、F-BasicやActiveBasicではラベルによるサブルーチン処理も考慮し、ラベルをPrivate関数と同じ扱いにしています。この機能は「ザ・プログラム解析 For VisualBasic」にはありません。

「ザ・プログラム解析(フリー版) For F-Basic/ActiveBasic V1.2」はここからダウンロード出来ますNew!


F-Basic V6.3で作成した画面をWindowsXP風にしたい


F-Basic V6.3は元々Windows95〜Windows2000までの対応であり、リソースを使った画面の配色もデフォルトのグレー色で作成する事が多々あったと思われます。しかし、WindowsXPは配色も違いますしフォントサイズについても色々と変更がなされている様なので、従来作成したプログラムを強制的(無理矢理)WindowsXP風に変更するツールを作りました。

このツールはF-Basicで作成したリソースを書き換えたい配色(24ビットカラー)に設定し、リソースの上書きを行います。また、リソースでは対応出来ない部分については補助プログラムを自動生成し本来のプログラムのヘッダに「#include」するだけとなります。呼出はStartイベントから生成されたルーチンを1回呼べば良いだです。

また、これまでリソースエディタからのみ配色を決定していましたが、フォームやコントロールの背景色をWindows標準3Dオブジェクトに合わせる事が出来ます。(ただし、この機能はリソースから「_CTRLBACKCOLOR」を削除し危険度が高い為、必ずリソースのバックアップを取っておいてください。)



本ツールの機能詳細は下記の通りです
1.開発環境から設定不可能なリソースのXP風の背景色を本ツールから強制的に変更しリソースを上書きする。
2.フォームの背景色、フォントサイズ調整、及びグループボックス内のバックカラーはリソースからの変更では無くヘッダファイルとしてプログラムを自動生成し提供する。
3.Windows標準3Dオブジェクトの背景色、文字色を適用可能。この場合、本ツールで指定した背景色は無効となります。
4.設計するOSのフォントポイントに合わせてヘッダファイルのフォント調整プログラムを作成します。

XP化無理矢理ツール(正式名:F-Basic V6.3 XP対応化作戦U V1.0β)はここからダウンロード出来ます。
(開発時間:約6時間)

本ツールのフォント調整はフォームをピクセルモードで作成している場合のみ利用可能です。Twipモード等でフォームを作成している場合はフォント調整を適用する必要はありません。

本ツールを業務で使用し、不具合が起きた時に即時対応して欲しいという依頼にはお答え出来ません。不具合が報告されれば対応致しますが即時は不可能です。その様な場合は類似ツールを自作されてください。

基本的にこのプログラムは単なる思いつきで作成した為、画面の配色変更、フォントサイズ調整以外に特に拘っている訳ではありません。


WindowsXPでもF-Basic V6.3を使いたい


F-Basic V6.3がWindowsXPで対応していない事は富士通のHPで既にご承知かと思いますが、F-Basic V6.3をWindowsXPで動作させた時の代表的な不具合として改行コードが0x0dになるという事があります。

という事でF-Basic V6.3をWindowsXPで動作させた時の0x0d改行の不具合を解消し、コンパイラへ修復されたプログラムを渡すクッションプログラムを作りました。現在の所は0x0d改行、0x0d0d0a改行を0x0d0aに修復する機能のみとなっていますが、その他WindowsXP特有の障害があれば随時アップして行きたいと思います。このプログラムをインストゥールすればエディタで編集した内容を保存し、FBCL.EXEを直接呼び出す様な手間は一切必要無くなります。今まで通りF-Basic総合エディタからコンパイルが行える様になります。

パッチモジュール(正式名:F-Basic V6.3 XP対応化作戦 V1.0β)はここからダウンロード出来ます。
(開発時間:約3時間)

パッチモジュール(正式名:F-Basic V6.3 XP対応化作戦 V1.1β)はここからダウンロード出来ます。
(開発時間:約2時間)

※V1.1βは#include指定されたユーザヘッダのファイルも修復の対象となります。

ダウンロード後は「必ず始めにお読みください.txt」を必ず参照してください。ドキュメントに従わずにインストゥールを行うとF-Basicコンパイラが正常に動作しない場合があります。

なお、本パッチモジュールを業務で使用し、不具合が起きた時に即時対応して欲しいという依頼にはお答え出来ません。不具合が報告されれば対応致しますが即時は不可能です。その様な場合はパッチを自作されてください。

本プログラムはスピード優先型でプログラミングしています。従って、業務APの様な分かりやすいPGを念頭において開発している訳ではありません。これはコンパイル時間を少しでも短縮する為のものです。
(本バージョンの非チューニングでは440MHzマシンで1秒に約5000行以上を編集。但し、OSはWindows98SE)

これでもスピードが遅い場合はチューニング方法として読み込みバッファに4096×2サイズを読み込んでいる部分を8192×2または16384×2にすると多少早くなります。詳しくはプログラムのソースをご参照ください。プログラム修正後はFBasicV63\Binフォルダにコピーする前に必ず「FBReset.Bat」を実行してパッチモジュールを取り外してください。

基本的にこのプログラムは単なる思いつきで作成した為、特に0x0d0a対応以外に拘っている訳ではありません。必要であればプリプロセッサ機能も搭載できる様にコーディングしてありますのでその場合は要望されてください。


Windowsプログラミングが難しい方はこれ!


F−Basicの特徴の一つにDOS継続という文句があります。もちろんF−BasicはDOSの手続き型を作成出来るのですがGUIは使いたい、しかしイベント駆動は理解出来ないというN88系ユーザやCOBOL上がりのユーザなどが今現在もおられる事は事実です。せっかくF−BasicがDOS継続を文句にしているならGUIもDOS時代のライブラリが使えれば・・・と思って作ったライブラリが「GSXGUI」です。

元々「GSXGUI」は私がFM−TOWNSユーザの頃、F−Basic386でもGUIを使いたいと思い作成したライブラリのF−Basic版です。このGSXGUIはFM−TOWNS版を作成後、QuickBasic版(PC98/FMR用)で作成した後、一切公開する事なく廃棄しましたがWindowsのイベント駆動がどうしても理解出来ないという方にとっては便利なGUIライブラリと思います。

その他、F−Basicでのリソース定義(フォーム)は最大16枚まで定義出来る事となっていますが、本ライブラリはリソースの定義では無くプログラム側からダイアログのクリエイトを行う為、F−Basicモジュールの限界である256個(内1つはGSXGUIが使用)以上のダイアログ定義が可能となります。但し、GSXGUIが同時に表示出来るダイアログはベースウィンドウを含め32枚までとなっています。33枚以上を同時に表示する場合はライブラリの変更が必要になります。

GSXGUIはこちらからダウンロード出来ます
(開発日数:約10日)

また、このGSXGUIを使っても難しいという方はCX画面ライブラリがあります。CX画面ライブラリはGSXGUIを作成する約2年前にN88日本語Basic(86)用に作成し、その他のBasicにも移植してきました。CX画面ライブラリはGSXGUIの様なメッセージが通知されない為、純粋なDOS用GUIライブラリに近いと思われます。また、CX画面ライブラリはGSXGUIに比べソースも小さく動作も軽い為、改造したい方などにはCXでも良いと思われます。

CX画面ライブラリについてもダイアログの個数はF−Basicの制限通り256個(内1つはCXが使用)以上定義可能です。但し、CXはGSXGUIと異なり同時に表示できるダイアログ数はベースウィンドウを含め16枚までとなっています。

CX画面ライブラリの最新版はこちらからダウンロード出来ます
(開発日数:約2日)

最新版のCX画面ライブラリには下記の「CX用セレクトボックス」オプションライブラリを同梱致しました。

CX用セレクトボックスライブラリとは、CX画面ライブラリでは用意されていないコンボボックスやリストボックスの代わりを行う為のものです。但し、このライブラリはダイアログに特化している為、選択処理の必要性がある場合にのみ関数呼出を行いリストより選択受付を行います。

これらの最新版の関数説明書を参照するには別途「GSXPR:開発者向けプリンタツール」が必要です。関数説明書を読まれる際にはこのツールをダウンロードされてください。


F-Basicで作成したソフトをDOS-Basicでも流用したい!


現在はWindowsが主流となり、DOS−Basic(PC−98用N88日本語Basicなど)でプログラミングする事は少ないと思います。しかし、中にはDOS−Basicも使いたいという方がおられる場合があります。問題はF−Basicが構造化及び階層化に対応している一方、DOS−Basicの殆どが旧Basicのスタイルであり、構造化や階層化が出来ないでいます。

せっかくF−Basicで作ってもDOS−Basicへの移植は面倒・・・と思われる場合は「STB構造化Basicプリプロセッサ」を使う事で構造化及び階層化されたプログラムを非構造化、非階層化する事が出来ます。

また、DOS−BasicでもGUIを使いたいという場合はCX画面ライブラリのSTB版も同梱しています。F−BasicでCX画面ライブラリを使いGUIを実現していれば基本的にSTBで非構造化、非階層化されたプログラムでも同じ様にCX画面ライブラリのGUIを利用する事が出来ます。

※但し、F−Basicで標準サポートされている「TYPE」宣言はサポートしておりません。

STB構造化Basicプリプロセッサは容量の関係上、ただ今ダウンロードを停止しています。必要な方は別途メールをお送りください。


F−Basicでマルチメディアプレーヤを作りたい!


ここでは、ちょっとツールという道から外れてしまいますがマルチメディアプレーヤのプログラムソースを公開します。と言ってもニャン子Player V1.5相当のプログラムなので大したものではありません。ただ、F−BasicではVBの様にMediaPlayerObjectが使えないという弱点(?)を利点にしてしまえば良い訳で、MCIObjectを利用する事で出来る事をソースプログラムを通して知って頂ければと思います。

ニャン子Player V2.0(グリーンカラー)ソースはここからダウンロード出来ます

← ニャン子Player V1.5の外観(シルバー)

← レベルメータ(2Ch)表示の場合

← レベルメータ(7素子2Ch)表示の場合

上記の通りF−BasicはVBの様なMediaPlayerObjectなど存在していない為、VBのMediaPlayerObjectを利用している方にとっては理解し難いものでしょうが、MCIObjectは全然難しくありません。また、デジタル表示やレベルメータ表示なども単純な仕掛けなのでソースリストを見て頂ければ分かると思います。

VBユーザの中にはMediaPlayerObjectを制御するOCXの存在すら知らず単純に動いたというだけでネット上に配布し、トラブった時の対処が分からないという開発者もいる様です。ある意味、MCIObjectは使い難い様にも思えますがF−BasicではMCIObjectを標準でサポートし、さらに独立型コンパイルを行えばDLL等も必要なく配布する事が出来ます。

F−Basicは恐らくMCIコマンドを間接的にMMSYSTEMへコマンドの受け渡しを行っていると思いますが、VBやF−Basic問わずMMSYSTEMのDLL(WINMM.DLL)を呼び出せば更に自由な制御が出来る様になります。


Copyright (C)2002 By ニャン子