ReNamer:Pascal Script:Quick guide
If you are not familiar with Pascal Scripting, first go through the excellent tutorial written by Tao Yue:
The following is a short overview of Pascal Script.
Basic pascal script
The structure of a basic Pascal script is as follows (The keywords are shown in ALLCAPS bold):
PROGRAM
ProgramName (FileList);
CONST
<Constant declarations>
TYPE
<Type declarations>
VAR
<Variable declarations>
<definitions of subprogram>
BEGIN
<Executable statements>
END.
Note that-
- The CONST, TYPE and VAR keywords may not be used in some scripts.
- All statements in the script use the semicolon; as terminator. Only the last statement (END.) uses a dot as terminator.
- The main code must be within the begin and end. keywords.
Control Structures
All the typical control structures (building blocks) occurring in Pascal Script are described in the following table.
The table shows a flow chart and Pascal Script code required to implement that logic. To compose your own PascalScript rule, you can simnply copy and paste the code and then edit it to finish your script.
In actual implementation, just substitute the following:
- Replace <condition> with an actual Pascal statement that tests for a condition.
- Replace <Action> with code block that takes action relevant to the condition. There may be several statements.
Branching
These structures are used to execute different blocks of code depending upon a condition.
Remarks | |||
---|---|---|---|
if <condition> then
begin <Action> end; |
Execute the <Action> statement only if the <Condition> is met. Otherwise pass on the control to the next statement that follows the <Action>. | ||
if <condition> then
begin <Action-1> end else begin <Action-2> end; |
Two alternative actions are provided. If <Condition> is met, execute <Action-1>. Otherwise execute <Action-2>. Thus one of these two <Actions> are definitely executed. After execution of the action, pass on the control to the next statement. | ||
case x of
<Action-1> Break end;
<Action-2> Break end;
<Default Action> end;
|
This is a generalized version of the if-then-else block (see second row above). | ||
case x of
<Action-1> end;
<Action-2> end;
<Default Action> end;
|
This is similar to the case structure above, but here, all the conditions are checked, and if any condition is met, the corresponding <Action> is execurted. The code structure can optionally have a default action. If defined, this action is always executed, regardless of whether any of the conditions are met. After that, the control is apassed to the next statement.
This structure is equivalent to a series of if-then blocks (see the first row), PLUS an optional <Default Action> block. |
Loops
Loops | Pascal script |
Flowchart (Logic) |
Remarks |
For |
for I:=x to y do
begin <Action> end; |
Execute the <Action> a certain number of times.
This example shows that the counter is incremented by 1, but it can be any statement that changes the value of the counter vaiable towards the target value. Similarly, the decision block can have any logical expression with the counter. Make sure that the exit condition is reached at some point of time; otherwise the loop will execute endlessly, and ReNamer will appear to be hung. | |
While |
while <condition> do
begin <Action> end; |
Check for a condition and if it is met, execute the <Action>.
The loop is repeated till the condition is met. When the condition is not met, the loop is terminated and control passes to the next statement. Note that if the condition fails in the first-ever check, the <Action> may not be executed at all. Make sure that the condition will fail at some point of time; otherwise the loop will execute endlessly, and ReNamer will appear to be hung. Sometimes the condition is set to be always TRUE, and then a statement inside the <Action> block breaks the loop based on a different condition.(See the break command below) | |
Repeat...Until |
repeat
<Action> until <condition>; |
This structure is similar to the While loop (see above). However, the only difference is that the <Action> is taken first and then the condition is checked. As a result, the <Action> is executed at least once. | |
<code> <u</u> OR
if <condition> then break; |
This statement is placed in any of the above loops to terminate the loop when a condition is met. Typically, it is used as the <Action> statement in a if-then block. This block is then embedded (nested) inside the other code block that is to be contionally terminated. See the Case block above, which uses the break statement as integral part of its structure. | ||
<code> <u</u> OR
if <condition> then |
This statement is placed in any of the above loops to jump to the end of the current iteration, bypassing all the subsequent statements within the loop. However, the execution of the loop continues (the next iteration starts). Typically, it is used as the <Action> statement in a if-then block. This block is then embedded (nested) inside the other code block, just before the statements that are to be skipped in the current iteration. | ||
<code> <u</u> OR
if <condition> then |
This statement is placed in any of the above loops to jump to the end of the current iteration, and also terminate the loop. The control passes to the next statement after the loop Typically, it is used as the <Action> statement in a if-then block that is embedded (nested) inside the other code block |