[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [HTCondor-users] if/endif conditionals in new/old style job transforms/routes



My example is new syntax.  

The old syntax puts square brackets [] around the route, which indicates it should be parsed as  a classad.  the semicolons are required for old syntax.

So in your examples below, you have Old syntax and new syntax swapped.  

Old syntax is

ROUTE_TRANSFORM_FOO @=end
[
   eval_set_Attribute = _expression_;
]
@end

New syntax is 

ROUTE_TRANSFORM_FOO @=end

  # declare a temporary variable, this does not change the job classad
  tmp = true
  # you can refer to temp variables in if expressions
  if $(tmp)
     EVALSET Attribute _expression_
  endif

@end


-tj



From: HTCondor-users <htcondor-users-bounces@xxxxxxxxxxx> on behalf of Thomas Hartmann <thomas.hartmann@xxxxxxx>
Sent: Wednesday, February 24, 2021 11:04 AM
To: htcondor-users@xxxxxxxxxxx <htcondor-users@xxxxxxxxxxx>
Subject: Re: [HTCondor-users] if/endif conditionals in new/old style job transforms/routes
 
Hi Tj,

thanks for the clarification :)

The example you gave - is it in old or new style syntax?  From the code
Krunow sugegsted it should be 'new style' [1], or?

---

We had a discussion here, which language/syntax styles/conventions are
suggested

The 'new syntax' marked with square brackets, with the macros tending to
be underscore_separated

```
ROUTE_TRANSFORM_SQUAREBRACKETS @=end
[
   lower_macro_foo.ad ... ;
   # eval_set_foo.ad ... ;
]
@end
```

The semicolons are not necessary but suggested, or?

---

And the 'old syntax' with something like

```
ROUTE_TRANSFORM_NOSQUAREBRACKETS @=end

   if defined Some.Ad
        CAPITALMACRO foo.ad
        # EVALSET foo.ad ...
   endif

@end
```

where the macros are normally named in capital letters in the documentation.

Job routes are equivalent/the same as job transformations - i.e., no
syntax differences?


Is this mostly correct? ;)


Cheers and thanks,
   Thomas



[1]
// Load transform rule from the config param into the xfm object.  If
                 // the config param starts with a '[' (after trimming
out leading whitespace above)
                 // then assume the rule is in the form of a new classad.
                 if ( raw_transform_text[0] == '[' ) {
...