C/AL

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

C/AL (C/SIDE® Application Language) is een programmeertaal die - zoals de naam doet vermoeden - gebaseerd is op C. De syntaxis is echter gebaseerd op Pascal. C/AL is een geïntegreerde taal voor het Microsoft Business Solutions Navision C/SIDE platform (Sinds de laatste versie Microsoft Dynamics NAV).

In deze taal zitten een deel mogelijke objecten die specifiek voor Navision zijn. Maar ook een groot deel van de standaardfuncties zijn terug te vinden in C/AL.

Vanaf Navision versie 5.0 of later zou C/AL afgeschaft worden en zou overgegaan worden naar .NET met mogelijkheid om codesnippets C/AL te gebruiken.

C/AL is Event-gebaseerd, niet object-georiënteerd. Bijna alle functies die Navision biedt, zijn in C/AL geprogrammeerd en alsdus ook beschikbaar aan de Solution Centers. Dit betekent dus dat Navision volledig kan aangepast worden aan de noden van de gebruiker. Gebruikerstoegang tot de C/AL code kan optioneel verkregen worden via de licentie. Zo krijgen programmeurs de mogelijkheid om zo het programma aan te passen of uit te breiden volgens hun noden.

Er bestaan ook veel extra modules, dat zijn extra onderdelen die door Solution Centra gecreëerd zijn en te koop aangeboden worden. Ook deze objecten worden vergrendeld of vrijgegeven in de licentie. De gecreëerde objecten kunnen simpel geïmporteerd of exporteerd worden via een binaire of tekstuele export-/importfunctie.

Sinds Navision versie 2009 is het mogelijk om .NET te gebruiken (als datatype DotNet). Echter enkel in de rolgebaseerde client. Het is niet mogelijk om het .NET framework rechtstreeks aan te roepen, maar enkel een uitgebreide groep van beschikbaar gestelde bibliotheken. Vermoedelijk worden deze bibliotheken opgebouwd door middel van reflection. De reden dat de .NET functionaliteit niet rechtstreeks beschikbaar is, heeft te maken met de eigen objecten van Navision die intern ook .NET zijn (een record in .NET is bijvoorbeeld een NAVRecord class) . Op deze manier kan afgeblokt worden dat de gebruikers Navision objecten aangeroepen en deze misbruiken. Iedere versie van Navision heeft daarom telkens ook slechts die versie van .NET framework beschikbaar. Een nieuwe versie installeren van het .NET framework, maakt het niet mogelijk deze in C/AL code te gebruiken.

Met Navision Versie 2013 is de rolgebaseerde client verdwenen en werd het mogelijk om ook in de application server (Navision service die gebruikerscode kan uitvoeren) .NET te gebruiken.



Voorbeelden[bewerken]

Hello World[bewerken]

Dit is het klassiek Hello World voorbeeld. Aangezien C/SIDE geen console heeft om output te tonen, gebruikt dit voorbeeld een dialoog scherm.

  MESSAGE('hello, world');

Filteren en ophalen records[bewerken]

Variabelen in C/AL zijn niet gedefinieerd in de code, maar door variable declaratie in het menu van editor. In dit voorbeeld Item verondersteld een variabele van het type Record te zijn.

  IF Item.GET('31260210') THEN
    MESSAGE('Item name is: %1',Item.Description);

  Item.RESET;
  Item.SETFILTER("No.", '%1..%2', FromItem, ToItem);
  Item.FINDLAST;

.

Looping en data manipulatie[bewerken]

Looping door een volledige recordset en het wijzigen van individuele records wordt bekomen door slechts een beperkt aantal lijnen code.

  Item.SETRANGE("Blocked",TRUE);
  IF Item.FINDSET THEN
    REPEAT
      IF Item."Profit" < 10 THEN BEGIN
        Item."Profit %" := 10;
        Item.MODIFY(TRUE);
      END;
    UNTIL Item.NEXT = 0;
  Item.MODIFYALL("Blocked",FALSE);