Expressions, Comments, Syntax Tips
PCL Expressions
-
Don’t break expressions in the middle of a keyword, constant, or identifier
-
Multiple blanks are the same as a single blank space
-
Lines beginning with “!” (bang operator) are echoed to the xterm (UNIX) or command window (NT), but are not executed
In MSC.Patran type: !`i` nodes created
In the xterm you see: %27 nodes created
-
PCL expressions beginning with “>” are echoed to the session file
-
P CL expressions can be typed directly into MSC.Patran at the command line
-
P CL expressions may also be created with an editor in a text file and directed into MSC.Patran as a session file or by using the PCL directive !!INPUT
Identifiers Naming Conventions -
Function names and/or variable names are called identifiers
-
Can be up to 32 characters long
-
Must begin with a non-digit
-
Case insensitive (as is all of PCL)
-
Cannot be a reserved keyword, i.e., FOR, IF, etc.
-
Valid identifiers
current_group
CurrentGroup
MyString
-
Invalid identifiers
a_very_very_very_very_very_very_very_very_long_name
95abc
list
Identifiers
Variable / Function Scope -
Global variable names and functions share the same name space
-
When two function names or two variable names conflict, the most recent addition supercedes the previous
-
When function names and variable names conflict, the variable name takes precedence
-
When compiling functions, PCL will indicate if a function name is superceded by writing “Cleared memory function” to the history window
-
Hint: Use a unique prefix to keep function definitions separate, i.e au_do_this_and_that.pcl
Structure of a PCL Function Function Basics -
PCL functions begin with a FUNCTION statement and end with an END FUNCTION statement.
-
The FUNCTION statement may contain an argument list to be passed in or out of the function.
-
An optional RETURN statement can be used to return a calculated value from the function to the calling statement.
-
Processing of the function terminates at either the END FUNCTION statement or a RETURN statement.
-
There may be multiple RETURN statements within a single function.
Structure of a PCL Function
S
Function arguments (null)
FUNCTION a_very_simple_function()
/* This is a simple function that writes:
“$# My favorite number is 29”
in the MSC.Patran history window using 3 different
“write” or “print” statements.
*/
/* This is a comment. */
$ This is also a comment.
INTEGER MyFavoriteNumber
MyFavoriteNumber = 29
ui_writec(“My favorite number is %d \n”, MyFavoriteNumber)
ui_writef(“A21,1X,I3”, “My favorite number is”, MyFavoriteNumber)
ui_write(“My favorite number is “//STR_FROM_INTEGER(MyFavoriteNumber))
END FUNCTION /* a_very_simple_function */
Function declaration
Comments (Who we kidding? We all know that everyone loathes commenting their code!)
Variable declaration
Variable initialization
Statements or expressions
Function terminator
imple PCL function Example
S tructure of a PCL Function
Sample output. The ui_write functions write text to the history window, the session file (patran.ses.##), and the journal file (model.db.jou)
-
A
FUNCTION another_simple_function(MyFavoriteNumber)
INTEGER MyFavoriteNumber
INTEGER MyLeastFavoriteNumber
MyLeastFavoriteNumber = 13
ui_write(“My favorite number is “//str_from_integer(MyFavoriteNumber))
ui_write(“My least favorite number is “// @
str_from_integer(MyLeastFavoriteNumber))
END FUNCTION /* another_simple_function */
Function argument
Calling statement
nother simple PCL function
Note all variables must be declared, including function arguments
Calling statement
another_simple_function(29)
$
Sample output
#My favorite number is 29
$#My least favorite number is 13
Share with your friends: |