Running cautil -f <file_name> where the input file contains a delete command that precedes the define command for the same resource (jobset/job) if the delete fails the define is not executed.
The behaviour is different: each command is executed separately, so even if the first command fails, the second command on the same resource is executed.
On Windows, when cautil is parsing the file it gathers consecutive statements dealing with the same object and processes them together. If there is a failure executing any of those statements then the rest will not be processed. Cautil will then pick up from where it left off and parse the rest of the file.
In other words, cautil groups consecutive statements dealing with the same object together and executes them together. If any of those statements fail to execute then the remaining statements in that block will not execute. If later on you have other statements for that objectID then they will be executed separately.
delete jobset A
define jobset A
delete job B
define jobset A
The first two statements will be executed together. If jobset A does not exist, the "delete jobset A" command will fail and therefore the "define jobset A" command that follows will not be executed. On the contrary the second "define jobset A" command that follows the "delete job B" command will be executed.
Our recommendation is to create separate files per object type. For example: one cautil file containing all "delete" statements and one with all "define" statements.