anchor.diff:  	SORT fileName
   	(ON? (ASCENDING | DESCENDING) KEY? qualifiedDataName+)+
   	(WITH? DUPLICATES IN? ORDER?)?
  -	(COLLATING? SEQUENCE IS? alphabetName)?
  -	(USING fileName+ | INPUT PROCEDURE IS? procedureName ((THROUGH | THRU) procedureName)?)
  -	(GIVING fileName+ | OUTPUT PROCEDURE IS? procedureName ((THROUGH | THRU) procedureName)?)
  +	(
  +		COLLATING? SEQUENCE IS? alphabetName+
  +		(FOR? ALPHANUMERIC IS? alphabetName)?
  +		(FOR? NATIONAL IS? alphabetName)?
  +	)?
  +	(
  +		USING fileName+ 
  +		| INPUT PROCEDURE IS? procedureName ((THROUGH | THRU) procedureName)?
  +	)
  +	(
  +		GIVING (fileName (LOCK | SAVE | NO REWIND | CRUNCH | RELEASE | WITH REMOVE CRUNCH)?)+
  +		| OUTPUT PROCEDURE IS? procedureName ((THROUGH | THRU) procedureName)?
  +	)
   ;
   
   // start statement
  
positive.code: ;
  
  subtractFromGivingStatement :
  	(identifier | literal)+ FROM (identifier | literal) ROUNDED? GIVING (identifier ROUNDED?)+
  ;
  
  subtractCorrespondingStatement :
  
negative.code: // set statement
  
  setStatement :
  	SET (setToStatement	| setUpDownByStatement)
  ;
  
  setToStatement :
  	(identifier+ TO (identifier | ON | OFF | literal))+
  ;
  
  setUpDownByStatement :
  	identifier+ (UP BY | DOWN BY) (identifier | literal)
  ;
  
  // sort statement
  