程序控制語句(二)
7.選擇結(jié)構(gòu):
(1)簡(jiǎn)單分支
格式:IF <邏輯表達(dá)式>
<語句|命令序列>
ENDIF
說明:該語句首先計(jì)算<邏輯表達(dá)式>的值。若<邏輯表達(dá)式>的值為真時(shí),則執(zhí)行<語句|命令序列>;否則執(zhí)行ENDIF之后的語句。
(2)選擇分支
格式:IF <邏輯表達(dá)式>
<語句|命令序列1>
ELSE
<語句|命令序列2>
ENDIF
說明:該語句首先計(jì)算<邏輯表達(dá)式>的值,當(dāng)<邏輯表達(dá)式>的值為真,則執(zhí)行<語句|命令序列1>;否則執(zhí)行<語句|命令序列2>中。執(zhí)行完<語句|命令序列1>或<語句|命令序列2>后都將執(zhí)行ENDIF之后的語句。 的語句
(3)多分支選擇
格式:DO CASE
CASE <邏輯表達(dá)式1>
<語句|命令序列1>
CASE <邏輯表達(dá)式2>
<語句|命令序列2>
......
CASE <邏輯表達(dá)式n>
<語句|命令序列n>
[OTHERWISE
<語句|命令序列n+1>]
ENDCASE
說明:執(zhí)行DO CASE語句時(shí),將逐個(gè)判斷CASE后面的條件是否為真。只要遇到一個(gè)條件為真的CASE,就執(zhí)行其后的語句序列,語句序列執(zhí)行完畢后,跳到ENDCASE后面的語句去執(zhí)行。如果所有的CASE后面的條件都為假,則執(zhí)行OTHERWISE后面的語句序列,如果沒有OTHERWISE語句,則直接轉(zhuǎn)去執(zhí)行ENDCASE后面的語句。
8.循環(huán)結(jié)構(gòu):
(1)條件循環(huán)
格式:DO WHILE <邏輯表達(dá)式>
<語句序列1>
[LOOP]
<語句序列2>
[EXIT]
<語句序列3> ENDDO
說明:根據(jù)<邏輯表達(dá)式>的值來控制循環(huán)。值為真時(shí),反復(fù)執(zhí)行DO WHILE與ENDDO之間的語句,直到<邏輯表達(dá)式>的值為假時(shí),結(jié)束循環(huán)執(zhí)行ENDDO后面的語句。
LOOP的功能是直接轉(zhuǎn)到循環(huán)控制語句DO WHILE,而不執(zhí)行LOOP和ENDDO之間的命令,LOOP只能在循環(huán)結(jié)構(gòu)中使用。
EXIT的功能是直接跳轉(zhuǎn)到循環(huán)體之外,執(zhí)行ENDDO后面的語句,EXIT也只能在循環(huán)結(jié)構(gòu)中使用。
(2)計(jì)數(shù)循環(huán)語句FOR...ENDFOR
格式:FOR <內(nèi)存變量>=<初值>TO<終值>[STEP <步長(zhǎng)>]
<語句序列>
[LOOP]
[EXIT]
ENDFOR [注釋]
說明:用數(shù)字控制的循環(huán)結(jié)構(gòu),循環(huán)的次數(shù)等于終值減去初值后除以步長(zhǎng)再加一。循環(huán)的終止條件是內(nèi)存變量的值等于終值。初值、終值和步長(zhǎng)的數(shù)據(jù)類型必須是整型的;程序的運(yùn)行次數(shù)、從初值到終值是遞增的還是遞減的,由STEP步長(zhǎng)決定。當(dāng)步長(zhǎng)忽略時(shí),默認(rèn)為1。
(3)數(shù)據(jù)庫循環(huán)
格式:SCAN [FOR <邏輯表達(dá)式1>|WHILE <邏輯表達(dá)式2>][<范圍>]
<語句序列1>
[LOOP]
<語句序列2>
[EXIT]
ENDSCAN
說明:對(duì)當(dāng)前數(shù)據(jù)表文件中滿足條件的記錄進(jìn)行加工處理。它自動(dòng)移動(dòng)記錄指針,當(dāng)程序執(zhí)行到ENDSCAN或LOOP時(shí),會(huì)對(duì)<邏輯表達(dá)式1>或<邏輯表達(dá)式2>進(jìn)行判斷,如果條件成立,它會(huì)自動(dòng)將指針移到下一個(gè)符合條件的記錄。
7.選擇結(jié)構(gòu):
(1)簡(jiǎn)單分支
格式:IF <邏輯表達(dá)式>
<語句|命令序列>
ENDIF
說明:該語句首先計(jì)算<邏輯表達(dá)式>的值。若<邏輯表達(dá)式>的值為真時(shí),則執(zhí)行<語句|命令序列>;否則執(zhí)行ENDIF之后的語句。
(2)選擇分支
格式:IF <邏輯表達(dá)式>
<語句|命令序列1>
ELSE
<語句|命令序列2>
ENDIF
說明:該語句首先計(jì)算<邏輯表達(dá)式>的值,當(dāng)<邏輯表達(dá)式>的值為真,則執(zhí)行<語句|命令序列1>;否則執(zhí)行<語句|命令序列2>中。執(zhí)行完<語句|命令序列1>或<語句|命令序列2>后都將執(zhí)行ENDIF之后的語句。 的語句
(3)多分支選擇
格式:DO CASE
CASE <邏輯表達(dá)式1>
<語句|命令序列1>
CASE <邏輯表達(dá)式2>
<語句|命令序列2>
......
CASE <邏輯表達(dá)式n>
<語句|命令序列n>
[OTHERWISE
<語句|命令序列n+1>]
ENDCASE
說明:執(zhí)行DO CASE語句時(shí),將逐個(gè)判斷CASE后面的條件是否為真。只要遇到一個(gè)條件為真的CASE,就執(zhí)行其后的語句序列,語句序列執(zhí)行完畢后,跳到ENDCASE后面的語句去執(zhí)行。如果所有的CASE后面的條件都為假,則執(zhí)行OTHERWISE后面的語句序列,如果沒有OTHERWISE語句,則直接轉(zhuǎn)去執(zhí)行ENDCASE后面的語句。
8.循環(huán)結(jié)構(gòu):
(1)條件循環(huán)
格式:DO WHILE <邏輯表達(dá)式>
<語句序列1>
[LOOP]
<語句序列2>
[EXIT]
<語句序列3> ENDDO
說明:根據(jù)<邏輯表達(dá)式>的值來控制循環(huán)。值為真時(shí),反復(fù)執(zhí)行DO WHILE與ENDDO之間的語句,直到<邏輯表達(dá)式>的值為假時(shí),結(jié)束循環(huán)執(zhí)行ENDDO后面的語句。
LOOP的功能是直接轉(zhuǎn)到循環(huán)控制語句DO WHILE,而不執(zhí)行LOOP和ENDDO之間的命令,LOOP只能在循環(huán)結(jié)構(gòu)中使用。
EXIT的功能是直接跳轉(zhuǎn)到循環(huán)體之外,執(zhí)行ENDDO后面的語句,EXIT也只能在循環(huán)結(jié)構(gòu)中使用。
(2)計(jì)數(shù)循環(huán)語句FOR...ENDFOR
格式:FOR <內(nèi)存變量>=<初值>TO<終值>[STEP <步長(zhǎng)>]
<語句序列>
[LOOP]
[EXIT]
ENDFOR [注釋]
說明:用數(shù)字控制的循環(huán)結(jié)構(gòu),循環(huán)的次數(shù)等于終值減去初值后除以步長(zhǎng)再加一。循環(huán)的終止條件是內(nèi)存變量的值等于終值。初值、終值和步長(zhǎng)的數(shù)據(jù)類型必須是整型的;程序的運(yùn)行次數(shù)、從初值到終值是遞增的還是遞減的,由STEP步長(zhǎng)決定。當(dāng)步長(zhǎng)忽略時(shí),默認(rèn)為1。
(3)數(shù)據(jù)庫循環(huán)
格式:SCAN [FOR <邏輯表達(dá)式1>|WHILE <邏輯表達(dá)式2>][<范圍>]
<語句序列1>
[LOOP]
<語句序列2>
[EXIT]
ENDSCAN
說明:對(duì)當(dāng)前數(shù)據(jù)表文件中滿足條件的記錄進(jìn)行加工處理。它自動(dòng)移動(dòng)記錄指針,當(dāng)程序執(zhí)行到ENDSCAN或LOOP時(shí),會(huì)對(duì)<邏輯表達(dá)式1>或<邏輯表達(dá)式2>進(jìn)行判斷,如果條件成立,它會(huì)自動(dòng)將指針移到下一個(gè)符合條件的記錄。

