在 dBASE 2019(或其前身如 dBASE PLUS、Visual dBASE 等)中,Command(指令)與 Expression(運算式)是兩個核心概念,它們在語法、用途與執行方式上有明顯差異。以下是詳細對比:
1. 定義與本質差異
| 項目 | Command(指令) | Expression(運算式) |
|---|---|---|
| 本質 | 完整的「動作指令」,由 dBASE 解譯器直接執行 | 計算後「產生一個值」的語法片段 |
| 範例 | LIST、USE customer、REPLACE name WITH “John” | “John” + ” Doe”、UPPER(name)、DATE() + 7 |
| 類型 | 動作(Action) | 值(Value) |
2. 語法位置差異
| 使用情境 | Command | Expression |
|---|---|---|
| 獨立執行 | 可直接在命令列輸入: ? “Hello” | 不可直接執行,必須放在有接收值的指令中: ? UPPER(“hello”) |
| 條件式中 | IF x > 10 DO something ENDIF | IF age >= 18 → age >= 18 是 Expression |
| 賦值 | name = “John”(等號是賦值指令) | name = UPPER(first) + ” ” + last → 右邊是 Expression |
3. 典型 Command 範例(動作)
dbase
USE customer
INDEX ON name TO cust_name
GO TOP
LIST name, phone
REPLACE ALL status WITH "A" FOR balance > 1000
CLOSE DATABASES這些都是 Command,會「做某件事」。
4. 典型 Expression 範例(產生值)
dbase
? UPPER(TRIM(name)) + ", " + city
? DTOS(birthdate)
? IIF(balance > 0, "欠款", "無欠款")
? YEAR(DATE()) - YEAR(birthdate)這些 Expression 必須搭配 Command(如 ? 顯示、=, STORE … TO, REPLACE … WITH 等)才能執行。
5. 常見混淆點與澄清
| 情境 | 正確用法 |
|---|---|
| 想顯示計算結果 | ? 100 + 200 → 100 + 200 是 Expression,? 是 Command |
| 條件判斷 | IF age > 18 → age > 18 是 Expression,IF…ENDIF 是 Command 結構 |
| 欄位賦值 | REPLACE age WITH YEAR(DATE()) – YEAR(birth) → 右邊是 Expression |
. 總結表格
| 特徵 | Command | Expression |
|---|---|---|
| 是否可獨立執行 | ✅ 是 | ❌ 否 |
| 是否產生值 | ❌ 否(或副作用) | ✅ 是 |
| 常用開頭 | USE, LIST, REPLACE, DO, IF | 變數、字串、函數、運算子 |
| 搭配使用 | 主導流程 | 提供資料/條件/值 |
| 範例指令 | ?, REPLACE … WITH, STORE … TO | 必須放在 WITH、TO、條件式右邊 |