diff options
| author | Murilo Ijanc <[email protected]> | 2026-07-26 12:49:48 -0300 |
|---|---|---|
| committer | Murilo Ijanc <[email protected]> | 2026-07-26 12:49:48 -0300 |
| commit | f979d07d23098b96e758b3feb555cd06d85d9b2d (patch) | |
| tree | 47298197a17a3d6c438a1f4cc7cb61afd390cf05 /copy/cepis.cpy | |
| download | cobol-f979d07d23098b96e758b3feb555cd06d85d9b2d.tar.gz | |
Initial importv0.1.0
Diffstat (limited to 'copy/cepis.cpy')
| -rw-r--r-- | copy/cepis.cpy | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/copy/cepis.cpy b/copy/cepis.cpy new file mode 100644 index 0000000..59d643c --- /dev/null +++ b/copy/cepis.cpy @@ -0,0 +1,81 @@ +*> --------------------------------------------------------------------- +*> cepis 0.1.0 -- public data layouts for the cep.is client. +*> +*> Copy this into WORKING-STORAGE (callers) or LINKAGE (subprograms). +*> It defines, in order: +*> +*> CEPIS-CONFIG client configuration; fill it with +*> CALL "CEPIS-DEFAULT-CONFIG" before overriding +*> CEPIS-STATUS outcome of the last call, with the six error +*> categories as 88-levels +*> CEPIS-CEP-INPUT a CEP as the user typed it, masked or not +*> CEPIS-CEP the same CEP, 8 digits +*> CEPIS-ADDRESS one address +*> CEPIS-HEALTH the answer of GET /health +*> CEPIS-BATCH the batch table, one slot per requested CEP +*> +*> Data field names are the API's own, in Portuguese. Everything else in +*> this library is English. +*> --------------------------------------------------------------------- + +*> Client configuration. CEPIS-DEFAULT-CONFIG fills every field; change +*> what you need afterwards. CFG-BASE-URL is the one that usually differs +*> between environments. +01 CEPIS-CONFIG. + 05 CFG-BASE-URL PIC X(200). + 05 CFG-TIMEOUT-MS PIC 9(9). + 05 CFG-MAX-ATTEMPTS PIC 9(4). + 05 CFG-BACKOFF-BASE-MS PIC 9(9). + 05 CFG-BACKOFF-MAX-MS PIC 9(9). + 05 CFG-TOTAL-TIMEOUT-MS PIC 9(9). + 05 CFG-USER-AGENT PIC X(120). + +*> Outcome of the last call. Test CEPIS-OK first; the six failure +*> categories are split by the decision the caller has to make, not by +*> the HTTP status that produced them. CEPIS-RETRIABLE covers the three +*> the client already retried on its own before giving up. +01 CEPIS-STATUS. + COPY "cepis-status.cpy" REPLACING + ==:P:== BY ==CEPIS== ==:L1:== BY ==05==. + +*> A CEP as the caller has it: "01001-000", "01001000" or "01001.000". +01 CEPIS-CEP-INPUT PIC X(20). + +*> The same CEP reduced to its 8 digits by CEPIS-NORMALIZE-CEP. +01 CEPIS-CEP PIC X(8). + +*> One address. Fields the database lacks come back as spaces, never as +*> a marker value. ADDR-GEO-PRESENT says whether the coordinate exists; +*> ADDR-GEO-LAT and ADDR-GEO-LON are meaningless when it does not. +01 CEPIS-ADDRESS. + COPY "cepis-address.cpy" REPLACING + ==:P:== BY ==ADDR== ==:L1:== BY ==05== ==:L2:== BY ==10==. + +*> The answer of GET /health. HEALTH-DEGRADED is not an error: the API +*> reporting itself unwell is the diagnosis you asked for. +01 CEPIS-HEALTH. + 05 HEALTH-STATUS PIC X(20). + 88 HEALTH-OK VALUE "ok". + 05 HEALTH-DNE PIC X(20). + 05 HEALTH-CEPS PIC 9(12). + 05 HEALTH-GEO PIC 9(12). + 05 HEALTH-BASE-GERADA-EM PIC X(32). + +*> The batch table. Fill BATCH-COUNT and BATCH-REQUESTED for each slot, +*> then CALL "CEPIS-LOOKUP-MANY". Every slot comes back in place: a CEP +*> that does not exist, or that is not 8 digits, leaves its slot +*> BATCH-ENTRY-MISSING. Slots are never removed or shifted. +*> +*> Batches carry no coordinate: the endpoint behind them is CSV and the +*> CSV has no geo column, so BAT-GEO-PRESENT is always "N" here even for +*> CEPs that do have one. Need the coordinate? Use CEPIS-LOOKUP. +01 CEPIS-BATCH. + 05 BATCH-COUNT PIC 9(4). + 05 BATCH-ENTRY OCCURS 1000 TIMES. + 10 BATCH-REQUESTED PIC X(20). + 10 BATCH-FOUND PIC X. + 88 BATCH-ENTRY-FOUND VALUE "Y". + 88 BATCH-ENTRY-MISSING VALUE "N". + 10 BATCH-ADDRESS. + COPY "cepis-address.cpy" REPLACING + ==:P:== BY ==BAT== ==:L1:== BY ==15== ==:L2:== BY ==20==. |