JPH03212739A - 手続き副プログラム展開方式 - Google Patents
手続き副プログラム展開方式Info
- Publication number
- JPH03212739A JPH03212739A JP2008750A JP875090A JPH03212739A JP H03212739 A JPH03212739 A JP H03212739A JP 2008750 A JP2008750 A JP 2008750A JP 875090 A JP875090 A JP 875090A JP H03212739 A JPH03212739 A JP H03212739A
- Authority
- JP
- Japan
- Prior art keywords
- argument
- subprogram
- procedural
- program
- information table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 239000000284 extract Substances 0.000 claims abstract description 8
- 238000003780 insertion Methods 0.000 claims description 11
- 230000037431 insertion Effects 0.000 claims description 11
- 230000015572 biosynthetic process Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、FORTRAN言語で記述された原始プログ
ラムにおける手続き副プログラム展開方式に関する。
ラムにおける手続き副プログラム展開方式に関する。
従来、この種の手続き副プログラム展開方式では、展開
される手続き副プログラムの仮引数に整合配列が存在す
る場合にそれを無視してその手続き副プログラムをその
手続き副プログラムを呼び出す手続きプログラム(以下
、呼び出しプログラムトいう)に展開すると、コンパイ
ラによる翻訳時に致命的エラーが発生するために、その
ような展開は行われていなかった。
される手続き副プログラムの仮引数に整合配列が存在す
る場合にそれを無視してその手続き副プログラムをその
手続き副プログラムを呼び出す手続きプログラム(以下
、呼び出しプログラムトいう)に展開すると、コンパイ
ラによる翻訳時に致命的エラーが発生するために、その
ような展開は行われていなかった。
上述した従来の手続き副プログラム展開方式では、手続
き副プログラムの仮引数に整合配列が存在する場合に、
その手続き副プログラムを呼び出しプログラムに展開す
ることが行われていないので、実行時にその手続き副プ
ログラムを呼び出しプログラムが呼び出すためのオーバ
ヘッドが発止するという欠点がある。
き副プログラムの仮引数に整合配列が存在する場合に、
その手続き副プログラムを呼び出しプログラムに展開す
ることが行われていないので、実行時にその手続き副プ
ログラムを呼び出しプログラムが呼び出すためのオーバ
ヘッドが発止するという欠点がある。
本発明の目的は、上述の点に鑑み、仮引数に整合配列を
含む手続き副プログラムを呼び出しプログラムに展開す
ることを可能にし、実行時にその手続き副プログラムを
呼び出すためのオーバヘットの発生を回避することがで
きる手続き副プログラム展開方式を提供することにある
。
含む手続き副プログラムを呼び出しプログラムに展開す
ることを可能にし、実行時にその手続き副プログラムを
呼び出すためのオーバヘットの発生を回避することがで
きる手続き副プログラム展開方式を提供することにある
。
本発明の手続き副プログラム展開方式は、FORTRA
N言語で記述された原始プログラム内の手続き副プログ
ラムを呼び出しプログラムに展開する手続き副プログラ
ム展開方式において、展開される手続き副プログラムの
仮引数に整合配列が存在するか否かを解析し存在してい
る場合には仮引数として指定されている整合配列の配列
名と寸法とを抽出し仮引数情報テーブルに格納する手続
き副プログラム解析部内の仮引数解析部と、展開される
手続き副プログラムの仮引数に対応する実引数として指
定されている配列の配列名と寸法とを抽出し実引数情報
テーブルに格納する呼出しプログラム解析部内の実引数
解析部と、前記仮引数解析部によって仮引数情報テーブ
ルに格納された情報および前記実引数解析部によって実
引数情報テーブルに格納された情報に基づいて仮引数と
して指定されている整合配列の型宣言文ならびに仮引数
として指定されている整合配列とその仮引数に対応する
実引数として指定されている配列とに関する動的記憶単
位共有文およびその動的記憶重位共有文に係る型宣言文
を作成し呼び出しプログラムに挿入するプログラム作成
部内の型宣言文/動的記憶華位共有文作成挿入部とを有
する。
N言語で記述された原始プログラム内の手続き副プログ
ラムを呼び出しプログラムに展開する手続き副プログラ
ム展開方式において、展開される手続き副プログラムの
仮引数に整合配列が存在するか否かを解析し存在してい
る場合には仮引数として指定されている整合配列の配列
名と寸法とを抽出し仮引数情報テーブルに格納する手続
き副プログラム解析部内の仮引数解析部と、展開される
手続き副プログラムの仮引数に対応する実引数として指
定されている配列の配列名と寸法とを抽出し実引数情報
テーブルに格納する呼出しプログラム解析部内の実引数
解析部と、前記仮引数解析部によって仮引数情報テーブ
ルに格納された情報および前記実引数解析部によって実
引数情報テーブルに格納された情報に基づいて仮引数と
して指定されている整合配列の型宣言文ならびに仮引数
として指定されている整合配列とその仮引数に対応する
実引数として指定されている配列とに関する動的記憶単
位共有文およびその動的記憶重位共有文に係る型宣言文
を作成し呼び出しプログラムに挿入するプログラム作成
部内の型宣言文/動的記憶華位共有文作成挿入部とを有
する。
本発明の手続き副プログラム展開方式では、手、続き副
プログラム解析部内の仮引数解析部が展開される手続き
副プロゲラLの仮引数に整合配列が存在するか否かを解
析し存在している場合には仮引数として指定されている
整合配列の配列名と寸法とを抽出し仮引数情報テーブル
に格納し、呼出しプログラム解析部内の実引数解析部が
展開される手続き副プログラムの仮引数に対応する実引
数として指定されている配列の配列名と寸法とを抽出し
実引数情報テーブルに格納し、プログラム作成部内の型
宣言文/動的記憶華位共有文作成挿入部が仮引数解析部
によって仮引数情報テーブルに格納された情報および実
引数解析部によって実引数情報テーブルに格納された情
報に基づいて仮引数として指定されている整合配列の型
宣言文ならびに仮引数として指定されている整合配列と
その仮引数に対応する実引数として指定されている配列
とに関する動的記憶単位共有文およびその動的記憶単位
共有文に係る型宣言文を作成し呼び出しプログラムに挿
入する。
プログラム解析部内の仮引数解析部が展開される手続き
副プロゲラLの仮引数に整合配列が存在するか否かを解
析し存在している場合には仮引数として指定されている
整合配列の配列名と寸法とを抽出し仮引数情報テーブル
に格納し、呼出しプログラム解析部内の実引数解析部が
展開される手続き副プログラムの仮引数に対応する実引
数として指定されている配列の配列名と寸法とを抽出し
実引数情報テーブルに格納し、プログラム作成部内の型
宣言文/動的記憶華位共有文作成挿入部が仮引数解析部
によって仮引数情報テーブルに格納された情報および実
引数解析部によって実引数情報テーブルに格納された情
報に基づいて仮引数として指定されている整合配列の型
宣言文ならびに仮引数として指定されている整合配列と
その仮引数に対応する実引数として指定されている配列
とに関する動的記憶単位共有文およびその動的記憶単位
共有文に係る型宣言文を作成し呼び出しプログラムに挿
入する。
次に、本発明について図面を参照して説明する。
第1図は、本発明の手続き副プログラム展開方式の一実
施例の構成を示すブロック図である。本実施例の手続き
副プログラム展開方式は、手続き副プログラム展開プロ
グラム1と、仮引数情報テーブル100と、実引数情報
テーブル200と、展開部原始プログラム(手続き副プ
ログラムが呼び出しプログラムに展開される前の原始プ
ログラム)300と、展開後原始プログラム(手続き副
プログラムが呼び出しプログラムに展開された後の原始
プログラム)400とを含んで構成されている。
施例の構成を示すブロック図である。本実施例の手続き
副プログラム展開方式は、手続き副プログラム展開プロ
グラム1と、仮引数情報テーブル100と、実引数情報
テーブル200と、展開部原始プログラム(手続き副プ
ログラムが呼び出しプログラムに展開される前の原始プ
ログラム)300と、展開後原始プログラム(手続き副
プログラムが呼び出しプログラムに展開された後の原始
プログラム)400とを含んで構成されている。
手続き副プログラム展開プログラム1は、仮引数解析部
11を有する手続き副プログラム解析部10と、実引数
解析部21を有する呼び出しプログラム解析部20と、
型宣言文/動的記憶単位共有文作成挿入部31を有する
プログラム作成部30とを含んで構成されている。
11を有する手続き副プログラム解析部10と、実引数
解析部21を有する呼び出しプログラム解析部20と、
型宣言文/動的記憶単位共有文作成挿入部31を有する
プログラム作成部30とを含んで構成されている。
第2図は、仮引数解析部11によって作成される仮引数
情報テーブル100の一例を示す図である。仮引数情報
テーブル100は、仮引数の個数と、仮引数の長さと、
仮引数とを記憶している。
情報テーブル100の一例を示す図である。仮引数情報
テーブル100は、仮引数の個数と、仮引数の長さと、
仮引数とを記憶している。
第3図は、実引数解析部21によって作成される実引数
情報テーブル200の一例を示す図である。実引数情報
テーブル200は、実引数の個数と、実引数の長さと、
実引数とを記憶している。
情報テーブル200の一例を示す図である。実引数情報
テーブル200は、実引数の個数と、実引数の長さと、
実引数とを記憶している。
次に、このように構成された本実施例の手続き副プログ
ラム展開方式の動作について説明する。
ラム展開方式の動作について説明する。
手続き副プログラム展開プログラムl内の手続き副プロ
グラム解析部10は、展開m1原始プログラム300を
人力する。
グラム解析部10は、展開m1原始プログラム300を
人力する。
手続き副プログラム解析部10内の仮引数解析部11は
、展開部原始プログラム300内に仮引数に整合配列を
含む手続き副プログラムが存在するか否かを解析する。
、展開部原始プログラム300内に仮引数に整合配列を
含む手続き副プログラムが存在するか否かを解析する。
この解析で展開部原始プログラム300内に仮引数に整
合配列を含む手続き副プログラムが存在する場合には、
仮引数解析部11はその手続き副プログラムにおいて仮
引数として指定されている整合配列の配列名と寸法とを
抽出し仮引数情報チーフル100に格納する(仮引数情
報テーブルlOOを作成する)。
合配列を含む手続き副プログラムが存在する場合には、
仮引数解析部11はその手続き副プログラムにおいて仮
引数として指定されている整合配列の配列名と寸法とを
抽出し仮引数情報チーフル100に格納する(仮引数情
報テーブルlOOを作成する)。
次に、呼出しプログラム解析部20内の実引数解析部2
1は、展開部原始プログラム300内の当該手続き副プ
ログラム(上述の仮引数解析部11による解析対象の手
続き副プログラム)に対する呼び出しプログラムにおい
て実引数として指定されている配列の配列名と寸法とを
抽出し実引数情報テーブル200に格納する(実引数情
報テーブル200を作成する)。
1は、展開部原始プログラム300内の当該手続き副プ
ログラム(上述の仮引数解析部11による解析対象の手
続き副プログラム)に対する呼び出しプログラムにおい
て実引数として指定されている配列の配列名と寸法とを
抽出し実引数情報テーブル200に格納する(実引数情
報テーブル200を作成する)。
プログラム作成部30は、当該手続き副プログラムを呼
び出しプログラムにある程度まで展開し、その後に型宣
言文/動的記憶単位共有文作成挿入部31を起動する。
び出しプログラムにある程度まで展開し、その後に型宣
言文/動的記憶単位共有文作成挿入部31を起動する。
プログラム作成部30内の型宣言文/動的記憶華位共有
文作成挿入部31は、仮引数情報チーフル100および
実引数情報テーブル200に格納されている情報に基づ
いて、仮引数として指定されている整合配列の型宣言文
と、仮引数として指定されている整合配列とその仮引数
に対応する実引数として指定されている配列との間でポ
インタを用いて実行時に記↑a単位を共有するための動
的記憶単位共存文およびその動的記憶単位共有文に係る
型宣言文(その動的記憶単位共有文で使用される変数の
型宣言文)とを作成し、それらの文を呼び出しプログラ
ムに挿入する。
文作成挿入部31は、仮引数情報チーフル100および
実引数情報テーブル200に格納されている情報に基づ
いて、仮引数として指定されている整合配列の型宣言文
と、仮引数として指定されている整合配列とその仮引数
に対応する実引数として指定されている配列との間でポ
インタを用いて実行時に記↑a単位を共有するための動
的記憶単位共存文およびその動的記憶単位共有文に係る
型宣言文(その動的記憶単位共有文で使用される変数の
型宣言文)とを作成し、それらの文を呼び出しプログラ
ムに挿入する。
プログラム作成部30は、以上のような処理により作成
された展開後原始プログラム400を出力する。
された展開後原始プログラム400を出力する。
第4図は、以上のような動作(仮引数に整合配列を含む
手続き副プログラムの展開)を具体的に説明するための
図であり、展開部原始プログラム300および展開後原
始プログラム400の一例を示す図である。
手続き副プログラムの展開)を具体的に説明するための
図であり、展開部原始プログラム300および展開後原
始プログラム400の一例を示す図である。
手続き副プログラム展開プログラム1に第4図中の展開
部原始プログラム300 (呼び出しプログラムである
サブルーチン副プログラム31o(SUBA)および展
開される手続き副プログラムであるサブルーチン副プロ
グラム340 (SUBB)を有する展開部原始プロ
グラム300)が入力されると、仮引数解析部11はサ
ブルーチン副プログラム340内の5LJBROUTI
NE文330中の仮引数に基づいて仮引数情報テーブル
100を作成しく第2図に示す仮引数情報テーブル10
0がこれに該当する)、実引数解析部21はサブルーチ
ン副プログラム310内のCALL文32文中20中数
に基づいて実引数情報テーブル200を作成する(第3
図に示す実引数情報テブル200がこれに該当する)。
部原始プログラム300 (呼び出しプログラムである
サブルーチン副プログラム31o(SUBA)および展
開される手続き副プログラムであるサブルーチン副プロ
グラム340 (SUBB)を有する展開部原始プロ
グラム300)が入力されると、仮引数解析部11はサ
ブルーチン副プログラム340内の5LJBROUTI
NE文330中の仮引数に基づいて仮引数情報テーブル
100を作成しく第2図に示す仮引数情報テーブル10
0がこれに該当する)、実引数解析部21はサブルーチ
ン副プログラム310内のCALL文32文中20中数
に基づいて実引数情報テーブル200を作成する(第3
図に示す実引数情報テブル200がこれに該当する)。
プログラム作成部30は、展開実行文430 (呼び出
しプログラムであるサブルーチン副プログラム310内
に展開されるサブルーチン副プログラム340内の実行
文)を作成する(この場合に、展開実行文430で使用
される名標がサブルーチン副プログラム310で使用さ
れている名標と重ならないように、サブルーチン副プロ
グラム340内の名標(「K」等)が適切な名標(rK
99999」のような−船釣には使用されない名標)に
変換される。したがって、付随的に型宣言文431が作
成される)。プログラム作成部30は、以上の処理の後
に、型宣言文/動的記憶単位共有文作成挿入部31を起
動する。
しプログラムであるサブルーチン副プログラム310内
に展開されるサブルーチン副プログラム340内の実行
文)を作成する(この場合に、展開実行文430で使用
される名標がサブルーチン副プログラム310で使用さ
れている名標と重ならないように、サブルーチン副プロ
グラム340内の名標(「K」等)が適切な名標(rK
99999」のような−船釣には使用されない名標)に
変換される。したがって、付随的に型宣言文431が作
成される)。プログラム作成部30は、以上の処理の後
に、型宣言文/動的記憶単位共有文作成挿入部31を起
動する。
型宣言文/動的記憶単位共有文作成挿入部31は、仮引
数情報テーブル100および実引数情報テーブル200
に格納されている情報に基づいて、仮引数として指定さ
れている整合配列の型宣言文410と、仮引数として指
定されている整合配列と実引数として指定されている配
列との整合をとるための動的記憶単位共有文420 (
rDYNAMICPOINTER(199998,B9
9999)Jと1199998=LOG (A)Jとの
2つの文により構成される文)およびその動的記憶単位
共有文420に係る型宣言文421とを作成する。
数情報テーブル100および実引数情報テーブル200
に格納されている情報に基づいて、仮引数として指定さ
れている整合配列の型宣言文410と、仮引数として指
定されている整合配列と実引数として指定されている配
列との整合をとるための動的記憶単位共有文420 (
rDYNAMICPOINTER(199998,B9
9999)Jと1199998=LOG (A)Jとの
2つの文により構成される文)およびその動的記憶単位
共有文420に係る型宣言文421とを作成する。
さらに、型宣言文/動的記憶単位共有文作成挿入部31
は、作成した型宣言文410ならびに動的記憶単位共有
文420および型宣言文421をサブルーチン副プログ
ラム310に挿入し、展開後原始プログラム400を作
成する(プログラム作成部30はその展開後原始プログ
ラム400を出力する)。
は、作成した型宣言文410ならびに動的記憶単位共有
文420および型宣言文421をサブルーチン副プログ
ラム310に挿入し、展開後原始プログラム400を作
成する(プログラム作成部30はその展開後原始プログ
ラム400を出力する)。
以上説明したように本発明は、仮引数解析部実引数解析
部および型宣言文/動的記憶単位共有文作成挿入部を設
けることにより、手続き副プログラムの仮引数に整合配
列が存在してもその手続き副プログラムを呼び出しプロ
グラムに展開することが可能となり、実行時にその手続
き副プログラムを呼び出すためのオーバヘンドの発生を
回避することができるという効果がある。
部および型宣言文/動的記憶単位共有文作成挿入部を設
けることにより、手続き副プログラムの仮引数に整合配
列が存在してもその手続き副プログラムを呼び出しプロ
グラムに展開することが可能となり、実行時にその手続
き副プログラムを呼び出すためのオーバヘンドの発生を
回避することができるという効果がある。
第1図は本発明の一実施例の構成を示すブロック図、
第2図は第1図中の仮引数情報テーブルの一例を示す図
、 第3図は第1回中の実引数情報テーブルの一例を示す図
、 第4図は第1図中の展開部原始プログラムおよび展開後
原始プログラムの一例を示す図である。 図において、 l・・・・手続きglプログラム展開プログラム、10
・・・手続き副プログラム解析部、11・・・仮引数解
析部、 20・・・呼び出しプログラム解析部、21・・・実引
数解析部、 30・・・プログラム作成部、 31・・・型宣言文/動的記憶単位共有文作成挿入部、 100・・仮引数情報テーブル、 200・・実引数情報テーブル、 300・・展開部原始プログラム、 310・・サブルーチン副プログラム(呼び出しプログ
ラム)、 320・・CALL文、 330・・5UBROUTINE文、 340・・サブルーチン副プログラム(展開される手続
き副プログラム)、 400・・展開後原始プログラム、 10 420 ・ 421.431・・・型宣言文、 ・動的記憶華位共存文、 430 ・ ・展開実行文である。
、 第3図は第1回中の実引数情報テーブルの一例を示す図
、 第4図は第1図中の展開部原始プログラムおよび展開後
原始プログラムの一例を示す図である。 図において、 l・・・・手続きglプログラム展開プログラム、10
・・・手続き副プログラム解析部、11・・・仮引数解
析部、 20・・・呼び出しプログラム解析部、21・・・実引
数解析部、 30・・・プログラム作成部、 31・・・型宣言文/動的記憶単位共有文作成挿入部、 100・・仮引数情報テーブル、 200・・実引数情報テーブル、 300・・展開部原始プログラム、 310・・サブルーチン副プログラム(呼び出しプログ
ラム)、 320・・CALL文、 330・・5UBROUTINE文、 340・・サブルーチン副プログラム(展開される手続
き副プログラム)、 400・・展開後原始プログラム、 10 420 ・ 421.431・・・型宣言文、 ・動的記憶華位共存文、 430 ・ ・展開実行文である。
Claims (1)
- FORTRAN言語で記述された原始プログラム内の手
続き副プログラムを呼び出しプログラムに展開する手続
き副プログラム展開方式において、展開される手続き副
プログラムの仮引数に整合配列が存在するか否かを解析
し存在している場合には仮引数として指定されている整
合配列の配列名と寸法とを抽出し仮引数情報テーブルに
格納する手続き副プログラム解析部内の仮引数解析部と
、展開される手続き副プログラムの仮引数に対応する実
引数として指定されている配列の配列名と寸法とを抽出
し実引数情報テーブルに格納する呼出しプログラム解析
部内の実引数解析部と、前記仮引数解析部によって仮引
数情報テーブルに格納された情報および前記実引数解析
部によって実引数情報テーブルに格納された情報に基づ
いて仮引数として指定されている整合配列の型宣言文な
らびに仮引数として指定されている整合配列とその仮引
数に対応する実引数として指定されている配列とに関す
る動的記憶単位共有文およびその動的記憶単位共有文に
係る型宣言文を作成し呼び出しプログラムに挿入するプ
ログラム作成部内の型宣言文/動的記憶単位共有文作成
挿入部とを有することを特徴とする手続き副プログラム
展開方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008750A JPH03212739A (ja) | 1990-01-18 | 1990-01-18 | 手続き副プログラム展開方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008750A JPH03212739A (ja) | 1990-01-18 | 1990-01-18 | 手続き副プログラム展開方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH03212739A true JPH03212739A (ja) | 1991-09-18 |
Family
ID=11701607
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008750A Pending JPH03212739A (ja) | 1990-01-18 | 1990-01-18 | 手続き副プログラム展開方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH03212739A (ja) |
-
1990
- 1990-01-18 JP JP2008750A patent/JPH03212739A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2666847B2 (ja) | 異種言語間連絡方式 | |
| JPH03129469A (ja) | 自然言語処理装置 | |
| US7412697B2 (en) | High-level language, architecture-independent probe program compiler | |
| JP2004139597A (ja) | モデリング環境の外からダイナミックシステムモデルの内部信号にアクセスするための方法 | |
| JPH03212739A (ja) | 手続き副プログラム展開方式 | |
| CN112799942B (zh) | 基于Keil C51的软件源码和目标码覆盖率分析方法和系统 | |
| JPH10187461A (ja) | 言語処理方式 | |
| WO1999024904A1 (en) | Apparatus and method for logging information relating to function calls to a function library | |
| JP2000029678A (ja) | プログラム言語変換方法、変換装置および記録媒体 | |
| JP3641090B2 (ja) | プログラミング支援装置とその方法 | |
| JPH08180094A (ja) | アーキテクチャ・シミュレータ | |
| JPH0343833A (ja) | 手続き副プログラム展開方式 | |
| JP2882876B2 (ja) | プログラム試験方法 | |
| JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
| JPH03282935A (ja) | コンパイル処理装置及びコンパイル処理方式 | |
| US8432802B2 (en) | Encapsulating frame of graphics data for replay | |
| JP2807854B2 (ja) | Cobolプログラムのデータ構造展開方式 | |
| KR100279731B1 (ko) | 칠 언어에 대한 제어 흐름 표시방법 | |
| JPH0279127A (ja) | フォートラン・コンパイル処理方式 | |
| JP3311761B2 (ja) | 並列処理プログラムシミュレータ | |
| JPH0357023A (ja) | コンパイラの型情報伝播処理方法 | |
| JPH1083328A (ja) | 単体テスト用疑似入出力実現方式 | |
| JP2000076094A (ja) | シミュレータ | |
| JPH0212528A (ja) | 手続き副プログラム展開方式 | |
| JP2764782B2 (ja) | Cobolプログラムのデータ構造展開方式 |