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/hexagone-foundation-skills
vue-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.
23ubiquitous-language
Extrait un glossaire de langage ubiquitaire style DDD de la conversation en cours, signale les ambiguïtés et propose des termes canoniques. Sauvegarde dans UBIQUITOUS_LANGUAGE.md. À utiliser quand l'utilisateur veut définir des termes métier, construire un glossaire, durcir la terminologie, créer un langage ubiquitaire ou mentionne « domain model », « DDD », « glossaire » ou « langage ubiquitaire ».
23grill-me
Interroge l'utilisateur sans relâche sur un plan ou un design jusqu'à atteindre une compréhension partagée, en résolvant chaque branche de l'arbre de décision. À utiliser quand l'utilisateur veut stress-tester un plan, se faire challenger sur son design, ou mentionne « grill me » / « interroge-moi » / « challenge-moi » / « questionne-moi ».
22meeting
Lance une réunion simulée avec plusieurs personas experts pour analyser un sujet sous des perspectives diverses, prendre une décision et proposer une solution avant implémentation. Peut optionnellement publier l'analyse de la réunion sur une issue GitLab ou GitHub liée.
22changelog-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.
22github-issues
Crée, récupère, met à jour et gère les issues GitHub avec collecte complète du contexte. À utiliser quand l'utilisateur veut créer une nouvelle issue, voir les détails d'une issue, mettre à jour des issues existantes, lister les issues du projet, ajouter des commentaires ou gérer les workflows d'issues dans GitHub.
22