Syntax errors are easily distinguished in the DIF rules language. Syntax errors are noted whenever the rules are dynamically compiled due to a START or REFRESH command. If a syntax error is discovered, message DIF90550-E is issued and the specified rules are not used. If a REFRESH command was issued, the existing rules continue to be used. The example below shows the messages issued as a result of a syntax error. The DIF90550-E message indicates the line on which the syntax error was found. If there are INCLUDE statements in the rules, which cause other members to be included in line during rule processing, then the line number includes the lines in the included rule member(s).
Syntax error messages
The following messages are issued when a syntax error is encountered during rule compilation:
F DIF,REF ACC
DIF90550-E SYMBOLIC FIELD (JBNAME) INVALID ON STMT DEFRULE OPERAND EXPRESSION LINE NUMBER 4
DIF20191-I RULE-CONVERSION MODULE DIFCRL HAD A RETURN CODE 12
Logic errors
Logic errors cannot be determined by DIF. If datasets are being assigned to the wrong pools or are receiving the wrong allocation characteristics, or SRS error recovery is not being performed, then the problem is most likely a logic error in the way the rules are coded.
Probably the most common type of logic error is failure to assign a pool to a dataset via a SET DISKPOOL= statement. If a logic error is suspected, an //ACCTRACE DD DUMMY statement should be added to the JCL. This statement will cause ACC or SRS rules processing to display the result of each statement in the rules when a dataset is processed.
Refer to the trace, which is written either to the JES SYSMSGS or the IDCAMS SYSPRINT dataset, to identify the error.