A logical is a logical name for a file or a directory.
Examples:
$ DEFINE TESTFILE DKA100:[TEST]TEST.TXT
allow any program to refer to the file as TESTFILE
$ DEFINE TESTDIR DKA100:[TEST]
allow any program to refer to TESTDIR:A.TXT and TESTDIR:B.TXT for DKA100:[TEST]A.TXT and DKA100:[TEST]B.TXT
$ DEFINE MYSTUFF DKA100:[MYSTUFF.] /TERMINAL /TRANSLATION=CONCEALED
allow any program to refer to MYSTUFF:[TEST]A.TXT and MYSTUFF:[TEST]B.TXT for DKA100:[MYSTUFF.TEST]A.TXT and DKA100:[MYSTUFF.TEST]B.TXT
Logicals can be scoped with /PROCESS, /JOB, /GROUP and /SYSTEM.
Symbols can be used both as variables in scripts and as command aliases.
$ a = a + 1
is a variable increment in a DCL script.
$ DLC :== DELETE/LOG/CONFIRM
in the file SYS$LOGIN:LOGIN.COM (which is executed at login) will make DLC an alias for DELETE/LOG/CONFIRM.
The short version is that = and == are for variables while := and :== are for aliases where one equal sign means current script only and two equal signs means keep.
DCL scripts are put in files with extension .COM and are executed with the @ command.
All DCL commands must be prefixed with a $ sign.