uniface-procscript
Uniface 9.7 ProcScript Reference -- Navigation Skill
This skill gives you access to the complete official Uniface 9.7 ProcScript reference documentation -- 594 entries across 8 merged category files in reference/. Your role is to look up and read these files when answering ProcScript questions, not to rely on memorized knowledge.
What is ProcScript (minimal context)
ProcScript is the 4GL scripting language of the Uniface low-code platform. Key traits to keep in mind when reading the docs:
- Semicolons (
;) start comments, not end statements - One statement per line (
%\for continuation) - Fields are referenced as
FIELD.ENTITY(qualified) orFIELD(in context) - Variables:
$1-$10(scratch),$NAME$(general),variables/endvariablesblocks - Lists use gold-semicolon as separator
$statusholds the result of the last operation (0 = success, <0 = error)- Code lives in triggers (event handlers) attached to components, entities, or fields
Documentation layout
All documentation is in reference/ relative to this skill. Each category is a single merged file containing all entries separated by --- horizontal rules:
reference/
llms.txt # Index: every entry with title + one-line description (~620 lines)
procstatements.md # 173 entries -- statements (retrieve, read, store, if, for, putitem, ...)
procfunctions.md # 248 entries -- functions ($status, $concat, $scan, $replace, $date, ...)
triggersstandard.md # 74 entries -- standard triggers (Read, Write, Store, Validate Field, ...)
triggersextended.md # 34 entries -- extended triggers (OnClick, OnChange, expand, ...)
procdatatypes.md # 21 entries -- data types (string, numeric, date, struct, handle, ...)
procprecomp.md # 23 entries -- preprocessor directives (#define, #if, #include, ...)
procstructfunctions.md # 13 entries -- struct functions ($name, $parent, $scalar, $tags, ...)
predefinedoperations.md # 8 entries -- predefined operations (Exec, Init, Cleanup, Quit, ...)
Each entry starts with # Title and includes the full reference content: syntax, parameters, return values, usage notes, and code examples. Entries are separated by ---.
How to answer ProcScript questions
Follow this lookup strategy. Always consult the docs -- do not answer from memory alone.
Step 1: Identify what the user needs
Map the user's question to a category file:
| User asks about... | Look in |
|---|---|
| A statement (retrieve, read, store, if, for, putitem, creocc, ...) | procstatements.md |
A $function ($status, $concat, $scan, $date, $curocc, ...) |
procfunctions.md |
| A trigger (Read, Write, Store, Validate, Leave Field, ...) | triggersstandard.md |
| An extended/widget trigger (OnClick, OnChange, expand, ...) | triggersextended.md |
| A data type (string, numeric, date, struct, handle, ...) | procdatatypes.md |
| Preprocessor (#define, #if, #include, compile-time constants) | procprecomp.md |
| Struct operations ($name, $parent, $scalar, $tags, ...) | procstructfunctions.md |
| Predefined operations (Exec, Init, Cleanup, Quit, ...) | predefinedoperations.md |
Step 2: Find the entry within the file
Option A -- Grep for the entry heading (fastest, when you know the name):
Grep: pattern="^# retrieve$" path="reference/procstatements.md" -A 80
This returns the entry and the following lines. Read until you hit the next --- separator or # NextTitle.
Option B -- Search the index (when unsure of the exact name):
Read reference/llms.txt to find the entry name and its category file. Each section lists the file:
## Statements
File: `procstatements.md`
- retrieve: Activate the Read trigger for the first outermost entity...
Option C -- Grep across all files (for cross-cutting questions):
Grep: pattern="your search term" path="reference/" glob="*.md"
This is useful for questions like "which statements support the /lock option?" or "where is $webinfo used?".
Step 3: Read and synthesize
- Use Grep with
-A(after context) to read the entry. Typically-A 80is enough for one entry; increase if the entry is longer - Pay attention to: syntax, parameters, return values, use restrictions, and code examples
- Check the Related Topics section at the bottom of each entry for connected concepts
- If the question spans multiple topics, grep multiple entries and synthesize
- Always cite which file and entry you consulted
Step 4: Respond with precision
- Quote exact syntax from the docs
- Include code examples from the docs (they use
```procscriptfenced blocks) - Mention
$statusreturn values and error codes when relevant - If the docs mention restrictions (component types, trigger contexts), include them
- When the user's question is ambiguous, list the possible interpretations with entry references
Common lookup patterns
"How do I do X?" (task-oriented)
- Search
reference/llms.txtfor keywords related to the task - Grep the most relevant entries from the appropriate category file
- Check
reference/triggersstandard.mdif the task involves a specific event context - Combine findings into a coherent answer with code examples from the docs
"What does X do?" (reference lookup)
- Grep directly for the entry:
pattern="^# X$"in the appropriate category file - Read and present: syntax, description, parameters, return values, examples
"What's wrong with this code?" (debugging)
- Identify which statements/functions the code uses
- Grep each one's entry, paying attention to:
- Correct syntax (the docs show exact syntax templates)
- Valid trigger contexts (some statements are only valid in specific triggers)
- Return values and error conditions
- Common gotchas mentioned in the "Use" or "Description" sections
"What are all the X?" (enumeration)
- Read
reference/llms.txtand filter by the relevant section header - Or Grep with a broad pattern across the relevant category file
Important caveats
- Generated files: The
reference/directory is regenerated bydoc/scripts/convert.pyfromdoc/html/sources -- do not edit these files manually. - Merged format: Each
.mdfile contains multiple entries separated by---. Use Grep with-Acontext to read individual entries. - Encoding: Source files are Windows-1252; generated output is UTF-8.
- Version: This documentation covers Uniface 9.7 specifically. Do not assume features from other versions.
More from dedalus-erp-pas/foundation-skills
react-best-practices
Guide complet des bonnes pratiques React et Next.js couvrant l'optimisation des performances, l'architecture des composants, les patrons shadcn/ui, les animations Motion et les patrons modernes React 19+. À utiliser lors de l'écriture, la revue ou le refactoring de code React/Next.js. Se déclenche sur les tâches impliquant des composants React, des pages Next.js, du data fetching, des composants UI, des animations ou de l'amélioration de la qualité du code.
208vue-best-practices
Guide des bonnes pratiques Vue.js 3 couvrant la Composition API, la conception de composants, les patrons de réactivité, le styling utility-first avec Tailwind CSS, l'intégration native de la bibliothèque de composants PrimeVue et l'organisation du code. À utiliser lors de l'écriture, la revue ou le refactoring de code Vue.js pour garantir des patrons idiomatiques et un code maintenable.
205playwright-skill
Automatisation complète du navigateur et tests web avec Playwright. Détecte automatiquement les serveurs de développement, gère le cycle de vie des serveurs, écrit des scripts de test propres dans /tmp. Tester des pages, remplir des formulaires, capturer des screenshots, vérifier le responsive design, valider l'UX, tester les flux de connexion, vérifier les liens, déboguer des webapps dynamiques, automatiser toute tâche navigateur. À utiliser quand l'utilisateur veut tester des sites web, automatiser des interactions navigateur, valider des fonctionnalités web ou effectuer tout test basé sur le navigateur.
170changelog-generator
Crée automatiquement des changelogs orientés utilisateur à partir des commits git en analysant l'historique, catégorisant les changements et transformant les commits techniques en notes de version claires et compréhensibles. Transforme des heures de rédaction manuelle en minutes de génération automatisée.
147postgres
Exécute des requêtes SQL en lecture seule sur plusieurs bases de données PostgreSQL. À utiliser pour : (1) interroger des bases PostgreSQL, (2) explorer les schémas/tables, (3) exécuter des requêtes SELECT pour l'analyse de données, (4) vérifier le contenu des bases. Supporte plusieurs connexions avec descriptions pour une sélection automatique intelligente. Bloque toutes les opérations d'écriture (INSERT, UPDATE, DELETE, DROP, etc.) par sécurité.
147article-extractor
Extraire le contenu propre d'articles depuis des URLs (billets de blog, articles, tutoriels) et sauvegarder en texte lisible. À utiliser quand l'utilisateur veut télécharger, extraire ou sauvegarder un article/billet de blog depuis une URL sans publicités, navigation ou encombrement.
146