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、條件式右邊
個人頭像照片

By 伍 芳左

MIS, ERP Pro...

發佈留言