Jsou hlavní součástí aplikace a většina ostatních souborů se vztahuje 
právě k těmto souborům.
Podle nastavení proměnné PG masser vyhledá patřičný soubor, který
vykoná, podle nastavení path z konfigurace masseru a aplikace.
Pokouší se najít soubor podle obsahu PG s příponou .pg nejdříve
podle konfigurace aplikace a poté masseru samotného takto:
pages / souborpages / souborZákladní složkou syntaxe těchto souborů jsou řídící tagy <? a
?>. Informace umístěné mezi těmito tagy program dále při
kompilaci zpracovává, zbytek souboru vytiskne beze změny na výstup.
Dále je možné použít varianty těchto tagů, všechny jsou zmíněny v následujících podsekcích.
Kód vložený do stránky je lokální v tom smyslu, že například funkce zapsaná ve stránce je neviditelná z jiných stránek v téže nebo jiné aplikaci, to samé platí pro proměnné (kromě globálních).
Příklad - aplikace APP, soubor page1.pg:
...
    <?
        sub my_func { print 'page1'; }
    
        my_func();
    ?>
...
...
    <?
        sub my_func { print 'page2'; }
    
        my_func();
    ?>
...
<? ... ?>Text mezi těmito dvěma tagy je považován za kód perlu a prakticky beze změny je proveden. Programátor může počítat s těmito globálními proměnnými:
Ve většině případů není nutné tento objekt používat, protože
k dispozici jsou všechny funkce modulu CGI přímo, viz 
use CGI qw(:all).
Dále je možné použít tyto zkratky, které budou nahrazeny odpovídajícím textem:
PAR(id) - hodnota z parametrizace aktuální
aplikaceTXT(id) - text podle aktuálního jazykaG(id) - je nahrazeno výrazem $g{'id'}<?= ... ?>Tato varianta se používá pro vložení hodnoty na dané místo stránky v případě,
že se neprovádí žádná další akce. Text <?=$variable?> je
ekvivalentní <? print $variable; ?>.
Příklad:
...
    <h1> <?='TXT(app_title)'?> </h1>
...
<?!---- ... ----?>Používá se pro označení poznámky. Text mezi těmito dvěma tagy nebude zpracován ani vytištěn do výsledného souboru.
Narozdíl od poznámky v HTML (<!---- ... ---->), která
je do výsledné stránky přenesena.
<?!include ...?>Syntaxe: <?!include filename [def1,[def2,...]]?>
Program se soubor daného jména pokouší najít obdobně jako v případě stránky (.pg) takto:
include / souborinclude / souborSoubor je vložen přímo do kódu, takže syntaxe souboru je stejná jako u stránek, je možné použít všechny speciální příkazy.
Systém masser v současné verzi nekontroluje rekurzivní vkládání
pomocí direktivy include, takové použití vede k zacyklení programu!
Definice defX lze použít pro řízení skutečně zahrnutých částí obsahu .inc pomocí
if, else a end konstrukce.
Příklad:
   Soubor test.pg:
     <?!include table print?>
   Soubor table.inc:
     <?!use table?>
     <?!javascript table?>
     <?:if print?>
       <?!css table_print?>
     <?:else?>
       <?!css table_screen?>
     <?:end?>
<?!package ...?>Syntaxe: <?!package filename [def1,[def2,...]]?>
Program se soubor jména [filename].pkg pokouší najít obdobně jako v případě stránky (.pg) takto:
package / souborpackage / souborMá prakticky stejnou funkci, jako include, ale předpokládá se spíše využití pro "zabalení" více modulů do jednoho funkčního celku (například JavaScript, CSS a kód dohromady).
Příklad:
<?!include button.inc?> <?!javascript button?> <?!css button?>
Definice defX lze použít pro řízení skutečně zahrnutých částí obsahu .pkg pomocí if, else a end konstrukce.
Příklad:
   Soubor test.pg:
     <?!package table print?>
   Soubor table.pkg:
     <?!use table?>
     <?!javascript table?>
     <?:if print?>
       <?!css table_print?>
     <?:else?>
       <?!css table_screen?>
     <?:end?>
<?!use ...?>Syntaxe: <?!use filename
Program se soubor jména [filename].pm pokouší najít obdobně jako v případě stránky (.pg) takto:
modules / soubormodules / souborTato direktiva slouží k vložení instrukce pro zahrnutí modulu do kódu stránky. Může být umístěna kdekoliv, je zpracována při kompilaci. Modul pro využití v masseru se prakticky nijak neliší od modulu v jazyce perl, ale lze v něm využít dalších možností - podrobnosti jsou dále v příslušné kapitole.
<?!page_start ...?>Syntaxe: <?!page_start [key1=>value1, key2=>value2, ...]?>
Vytiskne hlavičku stránky (HTTP hlavičku a začátek stránky po tag BODY včetně).
Jako parametry lze použít jakékoliv parametry přípustné ve funkci modulu CGI
start_html() a kromě nich také:
Tento příkaz musí být první výstup ve stránce, protože tiskne hlavičku HTTP protokolu, v jiném případě je výsledkem 500 Internal Error a v logu HTTP serveru hlášení typu "malformed headers".
Příklad:
...
    <?!page_start title=>'TXT(app_title)', bgcolor=>'#ffffff'?>
...
Tato funkce navíc zaručuje vložení odpovídajícího JavaScript kódu a definice
CSS, pokud ji nepoužijete, tagy javascript a css nepracují
správně. Funkce navíc vytiskne začátek formuláře a povinné skryté proměnné -
APP, PG, OP, LANG, SCH a SID.
<?!page_end?>Syntaxe: <?!page_end?>
Příkaz vytiskne konec stránky - ukončí formulář, BODY a HTML tagy. Měl by být použit na konci stránky.
<?!javascript ...?>Syntaxe: <?!javascript [ext:]filename?>
Umožňuje vložení JavaScript kódu do hlavičky stránky (mezi začátek a konec
HEAD tagu). Pokud použijete předponu ext:, program vloží pouze
odkaz na daný soubor, jinak se pokouší najít soubor jména 
[filename].js takto:
javascript / souborjavascript / souborV souborech s JavaScriptem je možno použít tyto konstrukce:
Nelze použít v souborech vložených s předponou ext: - nejsou
zpracovávány.
PAR([id]) je nahrazeno obsahem $conf{'id'} (konfigurace)TXT([id]) je nahrazeno obsahem $txt{'id'} (text)GLB([id]) je nahrazeno obsahem $g{'id'} (globální hash)Příklad - soubor example1.js:
    alert('TXT(error_required)');
    var num_items = PAR(max_results);
    for (var i=0; i<G(nusers); i++) { alert(i); }
    <?!javascript example1?>
<?!css ...?>Syntaxe: <?!css [ext:]filename?>
Umožňuje vložení CSS kódu do hlavičky stránky (mezi začátek a konec
HEAD tagu). Pokud použijete předponu ext:
Vzhledem k omezení modulu CGI, který program využívá, není možné vložit
více než jeden soubor s příponou ext: do stránky. Pokud jich použijete
více, bude vložen první z nich.
, program vloží pouze
odkaz na daný soubor, jinak se pokouší najít soubor jména 
[filename].css takto (zde je drobná změna oproti vyhledávání jinýc
souborů aplikací masser - bere se v úvahu proměnná $schema kvůli tomu, aby bylo
možné aplikacím měnit vzhled):
css / param('SCH') / souborcss / souborcss / param('SCH') / souborcss / souborV souborech s CSS je možno použít tyto konstrukce:
Nelze použít v souborech vložených s předponou ext: - nejsou
zpracovávány.
PAR([id]) je nahrazeno obsahem $conf{'id'} (konfigurace)TXT([id]) je nahrazeno obsahem $txt{'id'} (text)GLB([id]) je nahrazeno obsahem $g{'id'} (globální hash)Příklad - soubor example2.css:
    BODY { background-image: url(GLB(img_dir)/backg1.gif); }
    <?!css example2?>
<?!statement ...?>Syntaxe: <?!statement [dbnum:]filename?>
Připraví SQL příkaz v databázi (prepare_statement). Pomocí předpony dbnum (číslo) lze určit, ve kterém připojení to má být, pokud program využívá více než jedno připojení k databázi. Pokud dbnum není uvedeno, program předpokládá připojení číslo 1.
Program hledá soubor [filename].sql takto:
statement / souborstatement / soubor_DATE_ vloží konstrukci pro datum_DATETIME_ vloží konstrukci pro datum a čas
    SELECT * FROM cats_users WHERE pernr = ? AND last_chgp = _DATETIME_
    <?!statement MY_STAT?>
    <?!statement 2:OTHER_STAT?>
...
    <?
        my $result = $db->perform_statement('MY_STAT');
    ?>
<?!do ...?>Syntaxe: <?!do filename [parameters]?>
Na daném místě provede - na rozdíl od include nevloží celý kód - funkci, jejíž kód je v souboru filename, který masser hledá takto:
function / souborfunction / souborFunkce je globální pro celou aplikaci - mezi aplikacemi je neviditelná.
Příklad - soubor func.pl:
    my (undef,$par1,$par2) = @_;
    # POZOR! První parametr funkce je jméno aplikace!
    if ($par1 > $par2) {
        G(to_print) = 'TXT(is_greater)';
    } elsif ($par1 < par2) {
        G(to_print) = 'TXT(is_lesser)';
    } else {
        G(to_print) = 'TXT(is_equal)';
    }
...
    <?!do func.pl 5,8?>
    <?=$g{'to_print'}?>
...
Akce jsou vyvolávány na základě obsahu proměnné OP, kde může
být prázdný řetězec (žádná akce), identifikátor akce, nebo seznam 
identifikátorů akce oddělený čárkami.
Akce jsou prováděny před stránkami.
Program hledá soubor podle jména v OP s příponou .ac takto:
actions / souboractions / souborinclude a statement.
Nic vám ale nebrání použít cokoliv ze zbývajících možností.
Lze použít stejné konstrukce (TXT, PAR, G) a počítat se stejnými globálními proměnnými.