botserver/docs/src/chapter-05/keyword-format.md

83 lines
2.5 KiB
Markdown
Raw Normal View History

# FORMAT Keyword
2025-10-06 10:30:17 -03:00
The **FORMAT** keyword formats numbers, dates, and text for display. Use it when you need a quick, readable representation without writing custom code.
2025-10-06 10:30:17 -03:00
## Syntax
2025-10-06 10:30:17 -03:00
```basic
RESULT = FORMAT(VALUE, PATTERN)
2025-10-06 10:30:17 -03:00
```
## BASIC EXAMPLE
2025-10-06 10:30:17 -03:00
```basic
NUMBER = 1234.56
TEXT = "John"
DATE = "2024-03-15 14:30:00"
TALK FORMAT(NUMBER, "n") ' 1234.56
TALK FORMAT(TEXT, "Hello @!") ' Hello John!
TALK FORMAT(DATE, "dd/MM/yyyy") ' 15/03/2024
2025-10-06 10:30:17 -03:00
```
- **VALUE** any number, date string (`YYYYMMDD HH:MM:SS`), or text.
- **PATTERN** a short format string (see tables below).
2025-10-06 10:30:17 -03:00
## Quick Reference
2025-10-06 10:30:17 -03:00
### Numeric Patterns
| Pattern | Example | Output |
|---------|---------|--------|
| `n` | `FORMAT(1234.5, "n")` | `1234.50` |
| `F` | `FORMAT(1234.5, "F")` | `1234.50` |
| `f` | `FORMAT(1234.5, "f")` | `1234` |
| `0%` | `FORMAT(0.85, "0%")` | `85%` |
| `C2[en]` | `FORMAT(1234.5, "C2[en]")` | `$1,234.50` |
| `C2[pt]` | `FORMAT(1234.5, "C2[pt]")` | `R$ 1.234,50` |
### Date Patterns
| Code | Meaning | Example |
|------|---------|---------|
| `yyyy` | 4digit year | `2024` |
| `yy` | 2digit year | `24` |
| `MM` | month (0112) | `03` |
| `M` | month (112) | `3` |
| `dd` | day (0131) | `05` |
| `d` | day (131) | `5` |
| `HH` | 24hour (0023) | `14` |
| `hh` | 12hour (0112) | `02` |
| `mm` | minutes (0059) | `05` |
| `ss` | seconds (0059) | `09` |
| `tt` | AM/PM | `PM` |
**Example**
2025-10-06 10:30:17 -03:00
```basic
DATE = "2024-03-15 14:30:25"
TALK FORMAT(DATE, "dd/MM/yyyy HH:mm") ' 15/03/2024 14:30
2025-10-06 10:30:17 -03:00
```
### Text Patterns
| Placeholder | Effect |
|-------------|--------|
| `@` | Insert original text |
| `!` | Uppercase |
| `&` | Lowercase |
2025-10-06 10:30:17 -03:00
**Example**
2025-10-06 10:30:17 -03:00
```basic
NAME = "Maria"
TALK FORMAT(NAME, "Hello, !") ' Hello, MARIA
2025-10-06 10:30:17 -03:00
```
## Practical Tips
- **Test each pattern** in isolation before combining.
- **Locale codes** (`en`, `pt`, `fr`, …) go inside `C2[…]` for currency.
- **Dates must follow** `YYYYMMDD HH:MM:SS`; otherwise formatting fails.
- **Combine patterns** by nesting calls:
```basic
TALK FORMAT(FORMAT(VALUE, "C2[en]"), "!") ' $1,234.50 (uppercase not needed here)
```
2025-10-06 10:30:17 -03:00
## Common Pitfalls
- Using a date pattern on a nondate string → returns the original string.
- Forgetting locale brackets (`C2[en]`) → defaults to system locale.
- Mixing placeholders (`@`, `!`, `&`) in the same pattern only the last one applies.
2025-10-06 10:30:17 -03:00
Use **FORMAT** whenever you need a clean, userfriendly output without extra code. It keeps scripts short and readable.