Compilation of several components at once

Author: zdenek.socha@fullsys.cz (sochaz)

Hello, is there a way to compile more components at once using a command line interface of idf.exe? Currently I use something like this: C:xxxU96Xcommonbinidf.exe /adm=C:xxxU96Xunifaceadm /asn=myasn.asn /lis /inf mycomp I figured out, there's no need to specify "/frm", "/svc" or "/rpt" switch. For the only one component, it works fine. But to speed things up I put up to 10 components at once - as semicolon separated list. So, the command line looks like this: C:xxxU96Xcommonbinidf.exe /adm=C:xxxU96Xunifaceadm /asn=myasn.asn /lis /inf mycomp1;mycomp2;mycomp3 It works fine as long as all components are of the same type, that is forms, services or reports. But if it is form1;service1;form2 .. then only form1 and form2 are compiled and idf skips the service1. Is there any way to compile any kind of components? Kind regards, Zdeněk

9 Comments

  1. Hi Zdenek, If I add /all it works for me: C:xxxU96Xcommonbinidf.exe /adm=C:xxxU96Xunifaceadm /asn=myasn.asn /all /lis /inf form1;service1;form2


    Author: Theo Neeskens (tneeskens@itblockz.nl)
  2. Hi Zdenek, Or use Global Actions (from GoTo -> Administration -> Global Actions). Specify your components - use GOLD | if you want specific components, or use wildcards. Go to File - Compile.... All good.... Regards, Knut


    Author: Knut (knut.dybendahl@gmail.com)
  3. KnutD said Hi Zdenek, Or use Global Actions (from GoTo -> Administration -> Global Actions). Specify your components - use GOLD | if you want specific components, or use wildcards. Go to File - Compile.... All good.... Regards, Knut

    Sure... but this is *NOT* the command line interface I use vbs script to re-compile components.


    Author: sochaz (zdenek.socha@fullsys.cz)
  4. Theo Neeskens said Hi Zdenek, If I add /all it works for me: C:xxxU96Xcommonbinidf.exe /adm=C:xxxU96Xunifaceadm /asn=myasn.asn /all /lis /inf form1;service1;form2

    Hi Theo, this seems to work... but there is a side effect, that it compiles not only components but also everything, so the transcript is full of messages like Can't find Translation_table(s) Can't find Device_table(s) No compilation messages Can't find Global Proc module(s) Can't find Message Text(s) Can't find String Resource(s) Can't find Glyph(s) error: 1126 - Cannot compile; specified information not found. Menu compiler messages: [info 0, warnings 0, errors 1] in 0 menu(s) Can't find Panel(s) Can't find Drag & Drop Format(s) Compile Signature: 'FORM1' info: 1206 - Signature FORM1 compiled to ULANA, with ID ID2012102815553048. Compile Signature: 'SERVICE1' info: 1206 - Signature SERVICE1 compiled to ULANA, with ID ID2012112212403450. Compile Signature: 'FORM2' info: 1206 - Signature FORM2 compiled to ULANA, with ID ID2012102815561545. Compilations 3 out of 3; Messages: [info 3, warnings 0, errors 0] 1126 - Cannot compile; specified information not found. 1126 - Cannot compile; specified information not found. 1126 - Cannot compile; specified information not found. ... here comes components... Components compiled 3 out of 3; Messages: [info 54, warnings 190, errors 0] 1115 - Cannot compile; application definition not found. The middle part is great! It really complies all the components all together and I got the message, that "3 out of 3" were compiled. I wonder... would it be possible to get rid of compiling other thinks (like menus, panles, signatures...). According to ulibrary, /all switch is the same as /frm ... /svc ... /rpt ... I have tried this, but it does not work. So it seems that I have to keep it with /all or try to figure out, which component is of what type (service, form, report) and compile them separately. But this is not an easy task, since the list of components is a result of different actions (for example searching in listing, finding painted entity, etc). BTW the main reason for all this is to recompile the components after changes have been made in the model (entity and/or field), or after we globally change few triggers in many components (but not all components). Regards, Zdeněk PS: I wonder, how compiler found 1 error in 0 menus. Surprised


    Author: sochaz (zdenek.socha@fullsys.cz)
  5. You may well want to investigate $ude compile.  I have downloaded from somewhere (I think it was here, but can't find it now) a program which checks the latest compile time against the latest modification date for a component, and its fields, entities and supertypes.  So after changing the triggers or the model, one runs this program and it allows compilation of all the affected components.  I have a (much simpler) one which just compiles all the components containing a particular entity.  $ude compile doesn't need to know the component type.  I can probably let you have the source for these two programs if you want (they both require import of the DICT model from the uniface source...)


    Author: Iain Sharp (i.sharp@pcisystems.co.uk)
  6. Thanks for mentioning the $ude function. I will investigate it once more. I'm sure there are few problems with the $ude. I need a listing (level 1) and info messages, which is done via /lis /inf subswitches. This is not possible with $ude. So I consider the $ude function unusable right now. But now it reminds me of some undocumented features of $ude posted here... And I have found a post dated August 2008 with some hidden settings of $ude... so maybe, I'll give it a try now.


    Author: sochaz (zdenek.socha@fullsys.cz)
  7. I believe using the /cpt switch instead of /all should have the desired result


    Author: James Rodger (james.r.rodger@gmail.com)
  8. sochaz said Thanks for mentioning the $ude function. I will investigate it once more. I'm sure there are few problems with the $ude. I need a listing (level 1) and info messages, which is done via /lis /inf subswitches. This is not possible with $ude. So I consider the $ude function unusable right now. But now it reminds me of some undocumented features of $ude posted here... And I have found a post dated August 2008 with some hidden settings of $ude... so maybe, I'll give it a try now.

    Hi again, With a form using the $ude functions - (I haven't tried this - but it makes logical sense) using this : idf.exe /lis /inf /tst <frmname>  - and <frmname> being your component with the $ude functions... anyway - might be worth a try?? Knut


    Author: Knut (knut.dybendahl@gmail.com)
  9. James Rodger said I believe using the /cpt switch instead of /all should have the desired result

    Oh... thank you so much! I missed the /cpt switch while reading ulibrary. (I must be getting old. :-O) That is exactly what I've been looking for.


    Author: sochaz (zdenek.socha@fullsys.cz)