---input---
//IS198CPY JOB (PYGM-TEST-001),'PYGMENTS TEST JOB',
//  CLASS=L,MSGCLASS=X,TIME=(00,10)
//* Copy 'OLDFILE' to 'NEWFILE'.
//COPY01   EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSN=OLDFILE,DISP=SHR
//SYSUT2   DD DSN=NEWFILE,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(40,5),RLSE),      Some comment
//            DCB=(LRECL=115,BLKSIZE=1150)
//SYSIN    DD DUMMY
/*
//* Test line continuation in strings.
//CONT01   EXEC PGM=IEFBR14,PARM='THIS IS A LONG PARAMETER WITHIN APOST
//           ROPHES, CONTINUED IN COLUMN 15 OF THE NEXT RECORD'
//* Sort a couple of lines and show the result in the job log.
//SORT01   EXEC PGM=IEFBR14
//SORTIN   DD *
spam
eggs
ham
/*
//SORTOUT  DD SYSOUT=*
/*
//* Test line continuation with comment at end of line continued by a
//* character at column 72 (in this case 'X').
//STP4     EXEC PROC=BILLING,COND.PAID=((20,LT),EVEN),
//         COND.LATE=(60,GT,FIND),
//         COND.BILL=((20,GE),(30,LT,CHGE))  THIS STATEMENT CALLS THE X
//         BILLING PROCEDURE AND SPECIFIES RETURN CODE TESTS FOR THREEX
//         PROCEDURE STEPS.

---tokens---
'//'          Keyword.Pseudo
'IS198CPY'    Name.Label
' '           Text.Whitespace
'JOB'         Keyword.Reserved
' '           Text.Whitespace
'('           Punctuation
'PYGM'        Name
'-'           Operator
'TEST'        Name
'-'           Operator
'001'         Literal.Number.Integer
')'           Punctuation
','           Punctuation
"'"           Literal.String
'P'           Literal.String
'Y'           Literal.String
'G'           Literal.String
'M'           Literal.String
'E'           Literal.String
'N'           Literal.String
'T'           Literal.String
'S'           Literal.String
' '           Literal.String
'T'           Literal.String
'E'           Literal.String
'S'           Literal.String
'T'           Literal.String
' '           Literal.String
'J'           Literal.String
'O'           Literal.String
'B'           Literal.String
"'"           Literal.String
','           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'  '          Text.Whitespace
'CLASS'       Name
'='           Operator
'L'           Name
','           Punctuation
'MSGCLASS'    Name
'='           Operator
'X'           Name
','           Punctuation
'TIME'        Name
'='           Operator
'('           Punctuation
'00'          Literal.Number.Integer
','           Punctuation
'10'          Literal.Number.Integer
')'           Punctuation
'\n'          Text

"//* Copy 'OLDFILE' to 'NEWFILE'.\n" Comment.Single

'//'          Keyword.Pseudo
'COPY01'      Name.Label
'   '         Text.Whitespace
'EXEC'        Keyword.Reserved
' '           Text.Whitespace
'PGM'         Name
'='           Operator
'IEBGENER'    Name
'\n'          Text

'//'          Keyword.Pseudo
'SYSPRINT'    Name.Variable
' DD '        Keyword.Reserved
'SYSOUT'      Name
'='           Operator
'*'           Name.Builtin
'\n'          Text

'//'          Keyword.Pseudo
'SYSUT1'      Name.Variable
'   DD '      Keyword.Reserved
'DSN'         Name
'='           Operator
'OLDFILE'     Name
','           Punctuation
'DISP'        Name
'='           Operator
'SHR'         Name
'\n'          Text

'//'          Keyword.Pseudo
'SYSUT2'      Name.Variable
'   DD '      Keyword.Reserved
'DSN'         Name
'='           Operator
'NEWFILE'     Name
','           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'            ' Text.Whitespace
'DISP'        Name
'='           Operator
'('           Punctuation
'NEW'         Name
','           Punctuation
'CATLG'       Name
','           Punctuation
'DELETE'      Name
')'           Punctuation
','           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'            ' Text.Whitespace
'SPACE'       Name
'='           Operator
'('           Punctuation
'CYL'         Name
','           Punctuation
'('           Punctuation
'40'          Literal.Number.Integer
','           Punctuation
'5'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
'RLSE'        Name
')'           Punctuation
','           Punctuation
'      '      Text.Whitespace
'Some comment' Comment.Single
'\n'          Text

'//'          Keyword.Pseudo
'            ' Text.Whitespace
'DCB'         Name
'='           Operator
'('           Punctuation
'LRECL'       Name
'='           Operator
'115'         Literal.Number.Integer
','           Punctuation
'BLKSIZE'     Name
'='           Operator
'1150'        Literal.Number.Integer
')'           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'SYSIN'       Name.Variable
'    DD '     Keyword.Reserved
'DUMMY'       Name
'\n'          Text

'/*'          Keyword.Pseudo
'\n'          Text.Whitespace

'//* Test line continuation in strings.\n' Comment.Single

'//'          Keyword.Pseudo
'CONT01'      Name.Label
'   '         Text.Whitespace
'EXEC'        Keyword.Reserved
' '           Text.Whitespace
'PGM'         Name
'='           Operator
'IEFBR14'     Name
','           Punctuation
'PARM'        Name
'='           Operator
"'"           Literal.String
'T'           Literal.String
'H'           Literal.String
'I'           Literal.String
'S'           Literal.String
' '           Literal.String
'I'           Literal.String
'S'           Literal.String
' '           Literal.String
'A'           Literal.String
' '           Literal.String
'L'           Literal.String
'O'           Literal.String
'N'           Literal.String
'G'           Literal.String
' '           Literal.String
'P'           Literal.String
'A'           Literal.String
'R'           Literal.String
'A'           Literal.String
'M'           Literal.String
'E'           Literal.String
'T'           Literal.String
'E'           Literal.String
'R'           Literal.String
' '           Literal.String
'W'           Literal.String
'I'           Literal.String
'T'           Literal.String
'H'           Literal.String
'I'           Literal.String
'N'           Literal.String
' '           Literal.String
'A'           Literal.String
'P'           Literal.String
'O'           Literal.String
'S'           Literal.String
'T'           Literal.String
'\n'          Text

'//'          Keyword.Pseudo
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
' '           Literal.String
'R'           Literal.String
'O'           Literal.String
'P'           Literal.String
'H'           Literal.String
'E'           Literal.String
'S'           Literal.String
','           Literal.String
' '           Literal.String
'C'           Literal.String
'O'           Literal.String
'N'           Literal.String
'T'           Literal.String
'I'           Literal.String
'N'           Literal.String
'U'           Literal.String
'E'           Literal.String
'D'           Literal.String
' '           Literal.String
'I'           Literal.String
'N'           Literal.String
' '           Literal.String
'C'           Literal.String
'O'           Literal.String
'L'           Literal.String
'U'           Literal.String
'M'           Literal.String
'N'           Literal.String
' '           Literal.String
'1'           Literal.String
'5'           Literal.String
' '           Literal.String
'O'           Literal.String
'F'           Literal.String
' '           Literal.String
'T'           Literal.String
'H'           Literal.String
'E'           Literal.String
' '           Literal.String
'N'           Literal.String
'E'           Literal.String
'X'           Literal.String
'T'           Literal.String
' '           Literal.String
'R'           Literal.String
'E'           Literal.String
'C'           Literal.String
'O'           Literal.String
'R'           Literal.String
'D'           Literal.String
"'"           Literal.String
'\n'          Text

'//* Sort a couple of lines and show the result in the job log.\n' Comment.Single

'//'          Keyword.Pseudo
'SORT01'      Name.Label
'   '         Text.Whitespace
'EXEC'        Keyword.Reserved
' '           Text.Whitespace
'PGM'         Name
'='           Operator
'IEFBR14'     Name
'\n'          Text

'//'          Keyword.Pseudo
'SORTIN'      Name.Variable
'   DD '      Keyword.Reserved
'*'           Name.Builtin
'\n'          Text

'spam\n'      Other

'eggs\n'      Other

'ham\n'       Other

'/*'          Keyword.Pseudo
'\n'          Text.Whitespace

'//'          Keyword.Pseudo
'SORTOUT'     Name.Variable
'  DD '       Keyword.Reserved
'SYSOUT'      Name
'='           Operator
'*'           Name.Builtin
'\n'          Text

'/*'          Keyword.Pseudo
'\n'          Text.Whitespace

'//* Test line continuation with comment at end of line continued by a\n' Comment.Single

"//* character at column 72 (in this case 'X').\n" Comment.Single

'//'          Keyword.Pseudo
'STP4'        Name.Label
'     '       Text.Whitespace
'EXEC'        Keyword.Reserved
' '           Text.Whitespace
'PROC'        Name
'='           Operator
'BILLING'     Name
','           Punctuation
'COND'        Name
'.'           Punctuation
'PAID'        Name
'='           Operator
'('           Punctuation
'('           Punctuation
'20'          Literal.Number.Integer
','           Punctuation
'LT'          Name
')'           Punctuation
','           Punctuation
'EVEN'        Name
')'           Punctuation
','           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'         '   Text.Whitespace
'COND'        Name
'.'           Punctuation
'LATE'        Name
'='           Operator
'('           Punctuation
'60'          Literal.Number.Integer
','           Punctuation
'GT'          Name
','           Punctuation
'FIND'        Name
')'           Punctuation
','           Punctuation
'\n'          Text

'//'          Keyword.Pseudo
'         '   Text.Whitespace
'COND'        Name
'.'           Punctuation
'BILL'        Name
'='           Operator
'('           Punctuation
'('           Punctuation
'20'          Literal.Number.Integer
','           Punctuation
'GE'          Name
')'           Punctuation
','           Punctuation
'('           Punctuation
'30'          Literal.Number.Integer
','           Punctuation
'LT'          Name
','           Punctuation
'CHGE'        Name
')'           Punctuation
')'           Punctuation
'  '          Text.Whitespace
'THIS STATEMENT CALLS THE X' Comment.Single
'\n'          Text

'//'          Keyword.Pseudo
'         '   Text.Whitespace
'BILLING'     Name
' '           Text.Whitespace
'PROCEDURE AND SPECIFIES RETURN CODE TESTS FOR THREEX' Comment.Single
'\n'          Text

'//'          Keyword.Pseudo
'         '   Text.Whitespace
'PROCEDURE'   Name
' '           Text.Whitespace
'STEPS.'      Comment.Single
'\n'          Text
