Replies: 13 comments
-
Beta Was this translation helpful? Give feedback.
-
|
That does indeed remove the error, but...
Something has changed, because I have never set my current library before. It has always been the default. |
Beta Was this translation helpful? Give feedback.
-
|
@zkarj735 FWIW, I have the same setup as you and see the same behavior as you: Failing compiles even though the compile completed. Like you, I use a custom compile command (a modified version of BUILD from Scott Klement). The compile library is controlled by instructions in the source streamfile, and C4i does not know which library was the target. So the compile will be marked "failed" in C4i, unless I change the current library to the target library before compiling. It has always been like that. RDi has a similar issue, but uses *LDA data structure to retrieve the location of the EVFEVENTF file. C4i can't use that technique, since actions in C4i are stateless while RDi has a stateful connection. |
Beta Was this translation helpful? Give feedback.
-
I regularly compile into several different libraries (my compile tool uses the IFS folder structure to determine which) and have never set my current library before yesterday. How did it ever find EVFEVENT before? I guess if it's a stateless connection, then there's no smoke and mirrors I can use in my tool. |
Beta Was this translation helpful? Give feedback.
-
No unfortunately, there is currently no way of sending information back to C4i about which |
Beta Was this translation helpful? Give feedback.
-
|
I was more thinking I could set the current library before returning, but would C4i see that, or just keep its own idea? |
Beta Was this translation helpful? Give feedback.
-
|
C4i sets the current library and library list before running the command(s) in your action, and it does not detect any changes to that after command is completed. No information except the joblog and compiler output is returned to C4i. So no, C4i will not notice if you change the current library in your command. |
Beta Was this translation helpful? Give feedback.
-
|
I suppose I could copy the EVFEVENT member to the current library after the compile. My compile tool will know where the real one is, and can copy to *CURLIB. |
Beta Was this translation helpful? Give feedback.
-
|
That works a treat. I can leave QGPL set as my current library, and this gets EVFEVENT to where C4i expects to find it. I created this as a module and then called it as the very last step of my compile processor. The only prerequisite is that QGPL/EVFEVENT must already exist. In my case it did. I decided I wasn't going to have the code creating new files anywhere - just copy members between existing ones. That saves messing with definitions and authorities in the code. |
Beta Was this translation helpful? Give feedback.
-
|
Nice! One suggestion: You can create the EVFEVENT file if it does not exist... Now there's no requirement for the EVFEVENT to already exist. |
Beta Was this translation helpful? Give feedback.
-
|
Btw, I'm puzzling with another idea: Having C4i search the joblog for messages identifying any EVFEVENT files output from the command run by the action. This would allow C4i to download the correct file, disregarding the current library. It's easy to write to the joblog, SQL procedure SYSTOOLS.LPRINTF can be called from anywhere. |
Beta Was this translation helpful? Give feedback.
-
Sounds interesting 😉 |
Beta Was this translation helpful? Give feedback.
-
Per my comment after the code, this was a decision I made deliberately. Who knows what someone might have as their current library – I won't be the one to pollute them with EVFEVENT files. I'll leave it as a deliberate act.
I also looked at the joblog for anything canonical to identify this but there isn't, that I can see. You would have to determine the object library and finding that will differ depending on the object type being created. C4i won't even necessarily know the object type, either. In my case, my compile tool decided on CRTMOD versus CRTBNDRPG based on directives embedded in source comments. There are many possible processes and outcomes between defined VSCode actions and whatever they run on the server. |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
-
I've just got back from a 4-week break and am noting that my VSCode compiles are "failing".
Which is to say the actual compile works fine and I even get to see the compile listing, but it ends with the following messages:
I believe this is why the VSCode notification marks the compile as failed. I've seen a couple of similar issues but not quite the same. Note that this was working four weeks ago. I can't imagine much has changed on the server in that time except for PTFs.
I checked the QGPL/EVFEVENT file authority, and my group profile has *ALL. I changed *PUBLIC from *CHANGE to *ALL just in case, but it made no difference.
But I think the issue is that it thinks I was compiling QGPL/WRKQB.
My compile command is a custom one.
FMCMPSRC2 STMF('/home/T816416/builds/system-tools/fmlcl/wrkqb.clle') SBMJOB(*NO) /* OPTION(*EVENTF) */In this case it translates to and runs...
CRTBNDCL PGM(FMLCL/WRKQB) SRCSTMF('/home/T816416/builds/system-tools/fmlcl/wrkqb.clle') DBGVIEW(*ALL) OPTION(*EVENTF)...which, as I mentioned, successfully compiles the object. I get all of the output from our compile tool, plus the full compile listing, then the above errors.
So how is VSCode showing me the compile listing on the one hand but then failing to 'fetch errors' from the same? Or am I misunderstanding how it fits together?
I would appreciate any help getting to the bottom of this. It doesn't stop me compiling, but it makes it so I have to double check every listing to see whether it actually worked.
Beta Was this translation helpful? Give feedback.
All reactions