
Description="PL/1"

Categories = {"source"}


Keywords={
  { Id=1,
    List={"call", "chksucc", "close", "dcl", "do", "end", "if", "open", "put", "read"},
  },

    { Id=2,
    Regex=[[ (afp|do_|er_)\w+]],
    Group=0
  },

  { Id=2,
    List={ "black", "blue",
"bold", "brown", "center", "center_and_trim", "char", "cm", "condensed", "cyan",
"default_map", "double_dot", "errer", "expanded", "extrabold", "extracond",
"extraexp", "extralight", "fals", "fatal", "focenter", "fojustify", "foleft",
"foright", "green", "inch", "italic", "light", "l_ft", "magenta", "media",
"medium", "mm", "noerror", "normal", "noshade", "orient0", "orient180",
"orient270", "orient90", "orientdoc", "point_to_pel", "position_and_trim",
"red", "roman", "rotate0", "rotate180", "rotate270", "rotate90",
"rotate_default", "r_ght", "scale_to_fit", "screen", "semibold", "semicond",
"semiexp", "semilight", "severe", "stndard", "tru", "txtor0_0", "txtor180_270",
"txtor270_0", "txtor90_180", "u1440", "u240", "ultrabold", "ultracond", "ultraexp", "ultralight", "verbottom", "vercenter",
"vertop", "warning", "xabs", "xdirection", "xrel", "yabs", "ydirection",
"yellow", "ylines", "yrel"},
  },
  { Id=3,
    List={"abnormal", "abs", "acos", "acosf", "add", "addbuff", "addr",
    "addrdata", "alias", "aligned", "all", "alloc", "allocate", "allocation",
    "allocn", "allocsize", "any", "anycondition", "area", "ascii", "asin", "asinf",
    "asm", "asmtdli", "assembler", "assignable", "atan", "atand", "atanf", "atanh",
    "attach", "attention", "attn", "auto", "automatic", "availablearea",
    "backwards", "based", "begin", "bigendian", "bin", "binary", "binaryvalue",
    "bind", "binvalue", "bit", "bitloc", "bitlocation", "bkwd", "blksize", "bool",
    "buf", "buffered", "buffers", "bufnd", "bufni", "bufoff", "bufsp", "builtin",
    "bx", "by", "byaddr", "byte", "byvalue", "b4",  "cast", "cds", "ceil", "center",
    "centerleft", "centerright", "centre", "centreleft", "centreright", "char",
    "character", "charg", "chargraphic", "charval", "check", "checkstg",  "cmpat",
    "cobol", "col", "collate", "column", "comment", "compare", "compiledate",
    "compiletime", "completion", "complex", "cond", "condition", "conjg", "conn",
    "connected", "consecutive",
    "controlled", "conv", "conversion", "copy", "cos", "cosd", "cosf", "cosh",
    "count", "counter", "cpln", "cplx", "cs", "cstg", "ctl", "ctlasa", "ctl360",
    "currentsize", "currentstorage", "data", "datafield", "date", "datetime",
    "days", "daystodate", "daystosecs", "db",  "dec", "decimal", "declare", "def",
    "default", "define", "defined", "delay", "delete", "descriptor", "descriptors",
    "detach", "dft", "dim", "dimacross", "dimension", "direct", "display", "divide",
    "downthru", "edit", "else", "empty",  "endfile", "endpage", "entry",
    "entryaddr", "env", "environment", "epsilon", "erf", "erfc", "error", "event",
    "excl", "exclusive", "exit", "exp", "expf", "exponent", "exports", "ext",
    "external", "fb", "fbs", "fetch", "file", "fileddint", "fileddtest",
    "fileddword", "fileid", "fileopen", "fileread", "fileseek", "filetell",
    "filewrite", "finish", "first", "fixed", "fixedbin", "fixeddec",
    "fixedoverflow", "float", "floatbin", "floatdec", "floor", "flush", "fofl",
    "format", "fortran", "free", "from", "fromalien", "fs"
    , "gamma", "generic", "genkey", "get", "getenv", "go", "goto", "graphic", "gx",
    "handle", "hbound", "hex", "hexadec", "heximage", "high", "huge", "iand",
    "ieee", "ieor",  "ignore", "imag", "in", "index", "indexarea", "indexed",
    "init", "initial", "inline", "inot", "input", "int", "inter", "internal",
    "into", "invalidop", "ior", "irred", "irreducible", "isfinite", "isigned",
    "isinf", "isll", "ismain", "isnan", "isnormal", "iszero", "isrl", "iunsigned",
    "key", "keyed", "keyfrom", "keylength", "keyloc", "keyto", "label", "last",
    "lbound", "leave", "left", "length", "like", "limited", "line", "lineno",
    "linesize", "linkage", "list", "littleendian", "loc", "locate", "location",
    "log", "logf", "loggamma", "log10", "log10f", "log2", "low", "lowercase",
    "lower2", "maccol", "maclmar", "macname", "macrmar", "main", "max", "maxexp",
    "maxlength", "memconvert", "memindex", "memsearch", "memsearchr", "memverify",
    "memverifyr", "min", "minexp", "mod", "mpstr", "multiply", "name", "native",
    "ncp", "new", "nocharg", "nochargraphic", "nocheck", "nocmpat", "noconv", "noconversion", "nodescriptor",
    "noexecops", "nofixedoverflow", "nofofl", "noinline", "nolock", "nomap",
    "nomapin", "nomapout", "nonassignable", "nonconnected", "nonnative", "noofl",
    "nooverflow", "norescan", "normal", "nosize", "nostrg", "nostringrange",
    "nostringsize", "nostrz", "nosubrg", "nosubscriptrange", "noufl", "nounderflow",
    "nowrite", "nozdiv", "nozerodivide", "null", "offset", "offsetadd",
    "offsetdiff", "offsetsubtract", "offsetvalue", "ofl", "omitted", "on", "onchar",
    "oncode", "oncondcond", "oncondid", "oncount", "onfile", "ongsource", "onkey",
    "online", "onloc", "onoffset", "onsource", "onsubcode", "onwchar", "onwsource",
    "optional", "options", "order", "ordinal", "ordinalname", "ordinalpred",
    "ordinalsucc", "other", "otherwise", "output", "overflow", "package",
    "packagename", "page", "pageno", "pagesize", "parameter", "parmset", "password",
    "pending", "pic", "picspec", "picture", "places", "pliascii", "plicanc",
    "plickpt", "plidelete", "plidump",
    "pliebcdic", "plifill", "plifree", "plimove", "pliover", "plirest", "pliretc",
    "pliretv", "plisaxa", "plisaxb", "plisaxc", "plisrta", "plisrtb", "plisrtc",
    "plisrtd", "plitdli", "pointer", "pointeradd", "pointerdiff", "pointersubtract",
    "pointervalue", "poly", "pos", "position", "prec", "precision", "pred",
    "present", "print", "priority", "proc", "procedure", "procedurename",
    "procname", "prod", "ptr", "ptradd", "ptrdiff", "ptrsubtract", "ptrvalue",
    "putenv", "quote", "radix", "raise2", "random", "range", "rank", "real",
    "record", "recsize", "recursive", "red", "reducible", "reentrant", "refer",
    "regional", "reg12", "release", "rem", "reorder", "repattern", "repeat",
    "replaceby2", "reply", "reread", "rescan", "reserved", "reserves", "resignal",
    "respec", "retcode", "return", "returns", "reuse", "reverse", "revert",
    "rewrite", "right", "round", "samekey", "scalarvarying", "scale", "search",
    "searchr", "secs", "secstodate", "secstodays", "select", "seql", "sequential",
    "serialize4", "set", "sign", "signal", "signed", "sin", "sind", "sinf", "sinh", "sis", "size", "skip", "snap",
    "sourcefile", "sourceline", "sqrt", "sqrtf", "stackaddr", "statement", "static",
    "status", "stg", "stmt", "stop", "storage", "stream", "strg", "string",
    "stringrange", "stringsize", "structure", "strz", "subrg", "subscriptrange",
    "substr", "subtract", "succ", "sum", "suppress", "sysin", "sysnull", "sysparm",
    "sysprint", "system", "sysversion", "tally", "tan", "tand", "tanf", "tanh",
    "task", "then", "thread", "threadid", "time", "tiny", "title", "to", "total",
    "tpk", "tpm", "transient", "translate", "transmit", "trim", "trkofl", "trunc",
    "type", "ufl", "ulength", "ulength16", "ulength8", "unal", "unaligned",
    "unallocated", "unbuf", "unbuffered", "undefinedfile", "underflow", "undf",
    "unlock", "unsigned", "unspec", "until", "update", "upos", "uppercase",
    "upthru", "usubstr", "uvalid", "uwidth", "valid", "validdate", "value", "var",
    "varglist", "vargsize", "variable", "varying", "varyingz", "vb", "vbs",
    "verify", "verifyr", "vs", "vsam", "wait", "wchar", "wcharval", "weekday", "when", "whigh", "while", "widechar",
    "wlow", "write", "xmlchar", "y4date", "y4julian", "y4year", "zdiv",
    "zerodivide"},
  },
  { Id=4,
    Regex=[[(\w+)\s*\(]],
  },
}

Strings={
  Delimiter=[["]],
}

IgnoreCase=true

Comments={
  { Block=false,
    Delimiter= { [[\-\-]] },
  },
  { Block=true,
    Nested=false,
    Delimiter= { [[\/\*]],[[\*\/]],}
  }
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-]]

