オープンプログラミング言語(OPL)は、EPOCおよびSymbianオペレーティングシステムを実行する組み込みシステムおよびモバイルデバイス向けのプログラミング言語です。1984年にイギリスのPsion社によってリリースされました。
OPLは、元々はPsionのクラシックPDAであるSeries 3、5 / 5mx、Series 7、netBook –netPad、およびPsion製のMC218で使用するために設計され、標準アプリケーションスイートの一部として提供されました。また、 Nokia 9200、9300、9500 Communicatorシリーズの携帯電話およびPDA、Sony Ericsson P800、P900、P910シリーズにもインストールできます。さらに、Workabout mxなどのPsion Teklogix産業用ハンドヘルドにもOPLが含まれており、OSバージョン4を独自に使用した、広く互換性のあるEPOC32デバイスである、あまり知られていないOregon 'Osaris'オーガナイザーにも搭載されていました。OPLはBASICに似たインタプリタ型言語です。Visual Basicと完全に互換性のある言語OVALも開発されています。
この言語は元々 Organiser Programming Languageと呼ばれ、Psion LtdがPsion Organiser用に開発しました。Colly Myers が設計し、最初のバージョンは Richard Harrison と Martin Stamp によって実装されました。最初の実装 (グラフィックなし) は、初代 Psion Organiser (現在は Psion Organiser I、1984 年と呼ばれています) 向けで、Science、Finance、Math のデータパックが同梱されていました。Psion Organiser II (1986 年)で組み込みソフトウェアとして真にアクセス可能になり、この言語はPsion Series 3以降でも使用されるようになりました。Psion がパーソナルデジタルアシスタント市場から撤退した後、Symbian に OPL を導入することを目的としたプロジェクトが、新興の Symbian Developer Program がオープンソースソフトウェアとしてリリースしたことで実現しました。この言語は現在、SourceForgeのopl-devというプロジェクトで入手可能です。
この言語は現在、Symbian OS v8以降では利用できません。Symbian OSのサポート終了に伴い、OPLが後世代のSymbianデバイスで利用可能になる可能性は低いと思われます。2010年現在、Nokiaデバイス開発者は代わりにS60向けにPythonを使用するよう推奨されています(「Python for S60 」を参照)。
以下は「Hello, World!」プログラムのコンソール版です。
PROC main: 「こんにちは、世界!」と印刷します。 一時停止 40 ENDP
(ソースコードはOPL WikiのPCDevPrimerから引用しました。)
そしてこちらが、Nokia Series 80のユーザーインターフェースのGUI版です。
CONST KKeyEnter%=13 PROC hello: dINIT "こんにちは" dTEXT "","ハローワールド! dBUTTONS "OK",KKeyEnter% ダイアログ ENDP
OPLは構造化プログラミング言語です。OPLプログラムにはプロシージャが含まれており、これは他のプログラミング言語における関数(サブルーチン)によく似ています。
例:
PROC test: dINIT "Your Challenge" dTEXT "" , "この質問に対する答えは「いいえ」ですか?" dBUTTONS "Yes" , % y , "No" , % n IF DIALOG =% y PRINT "いいえ、違います!" ELSE PRINT "はい、そうです!" ENDIF GET ENDPこの残酷な質問プログラムでは、「はい」ボタンにはショートカットキーCtrl+yが割り当てられ、「いいえ」にはCtrl+nが割り当てられ、それぞれ%yと%nで表されます。ダイアログからのユーザー入力はIF文でテストされ、適切な応答が画面に表示されます。ダイアログボックスを使用せずにユーザー入力を取得する「GET」キーワードは、ここではプログラムを終了する前にキー入力を待つためにのみ使用されています(そうしないと、ユーザーがテキストを読む時間を与えずにプログラムがすぐに終了してしまいます)。ダイアログからの出力は変数に格納することもできます。
プロシージャ固有の変数はLOCALキーワードを使用して宣言する必要があります。グローバル変数はGLOBALキーワードを使用して定義します。
以下の表では、という名前のサンプル変数を使用していますvar。
OPLはオペレーティングシステムのCALLを介してPsion Series 3の高度な機能と連携していましたが、後のPsion Series 5mxでは、これはシステム読み出し専用メモリ(ROM)に格納されるいわゆるOPXライブラリ(Zドライブと呼ばれる)に変更されました。Nokia 9210、Nokia 9300、Nokia 9500 Communicator向けには「OPX」ライブラリも提供され、ショートメッセージサービス( SMS)の処理やBluetooth通信の管理を行うOPXルーチンが追加されました。
OPLのその他の機能には、文字で始まるものがあります。g例えば、グラフィカル機能、mメニュー、dダイアログなどです。