If LMS libraries (e.g. patch level, corrections etc.) are downloaded
from Empower, decoded (SNT) under BS2000 and copied with
P.COPYPAM
, the result is not an LMS library.
Procedure SNT-DECOD
does not convert them correctly.
SNTCOD
under BS2000 always creates files with
REC-FORM=VARIABLE
. But the conversion programs
SAMTOPAM
and SAMTOLIB
expect files with
REC-FORM=FIXED
.
This issue is handled in the following SAGSIS problems:
227084
231310
231379
The input data set for this procedure is the unloaded file from Empower which must be correctly transferred to BS2000 using the following file attributes:
RECF=F RECS=80 BLKS=(STD,1)
Therefore an additional step is necessary to convert
REC-FORM
from VARIABLE
to FIXED
. The
following example procedure will do this.
/ "-----------------------------------------------------------------" / " PROCEDURE: P.SNTCOD " / " TASK : DECOD (AND CONVERT IF NECESSARY) FILES UNLOADED" " / " FROM EMPOWER. " / " " / " CONVERSION STEP " / " --------------- " / " " / " ALL SOFTWARE AG BS2000 FILES ARE DELIVERED AS SEQUENTIAL " / " FILES. THUS A CONVERT STEP IS NECESSARY FOR LMS-LIBRARIES. " / " CURRENTLY THERE ARE EXISTING THREE DELIVERY FORMATS FOR " / " LIBRARIES (DSORG = DATASET ORGANIZATION) " / " " / " DSORG REC-FORM REC-SIZE " / " ----- ---------- -------- " / " (1) LIB F(IXED) 4096 " / " (2) PAM F(IXED) 2064 " / " (3) LMS F(IXED) 80 " / "-----------------------------------------------------------------" / SET-PROCEDURE-OPTIONS - / DATA-ESCAPE-CHAR = *STD / / BEGIN-PARAMETER-DECLARATION / DECLARE-PARAMETER INPUT-FILE (*PROMPT) / DECLARE-PARAMETER SNTLIB ('SNT112.LIB') / DECLARE-PARAMETER LMS ('$LMS') / END-PARAMETER-DECLARATION / / DECLARE-VARIABLE FILE-NAME / DECLARE-VARIABLE REC-FORM / DECLARE-VARIABLE REC-SIZE / DECLARE-VARIABLE DSORG (' ') / / "-----------------------------------------------------------------" / " DECOD INPUT-FILE " / "-----------------------------------------------------------------" / ADD-FILE-LINK LINK-NAME=SNTCOD, FILE-NAME=&(INPUT-FILE) / WR-TEXT 'CALL PROCEDURE DECODSDF ON LIBRARY &SNTLIB' / SHOW-VAR INPUT-FILE / START-PROG *MOD(&(SNTLIB),DECODSDF) / / "-----------------------------------------------------------------" / " GET FILE INFORMATION " / "-----------------------------------------------------------------" / ADD-FILE-LINK LINK-NAME=EDTSAM, FILE-NAME=&(INPUT-FILE), - / ACCESS-METHOD=*BY-CAT, RECORD-FORMAT=*BY-CAT, - / RECORD-SIZE=*BY-CAT, BUFFER-LENGTH=*BY-CAT / MOD-JOB-SW ON=(4,5) / START-EDT @ READ '/' 0.0003 R @ SYSTEM 'REMOVE-FILE-LINK EDTSAM' @ ON 1 CHANGE ALL X'00' TO X'40' @ SETVAR 'REC-FORM' = % :21-21: @ SETVAR 'REC-SIZE' = % :29-32: @ DELETE % :13-15: @ SETVAR 'FILE-NAME' = % :6-16: @ HALT / MOD-JOB-SW OFF=(4,5) / SHOW-VAR (FILE-NAME, REC-FORM, REC-SIZE) / / "-----------------------------------------------------------------" / " CONVERT TO LMS-LIBRARY " / "-----------------------------------------------------------------" / IF (REC-FORM = 'F') / / IF (REC-SIZE = '4096') / "------------------------------------------------------------" / DSORG = 'LIB' / "------------------------------------------------------------" / SHOW-VAR DSORG / DELETE-FILE &(FILE-NAME), SUPPRES-ERR=DMS0533 / CREATE-FILE &(FILE-NAME), SPACE=(1000,500) / ADD-FILE-LINK - / LINK-NAME = PCOUT, - / FILE-NAME = &(FILE-NAME), - / ACC-METHOD = *UPAM, - / BUF-LENGTH = *STD(2) / START-PERCON // ASSIGN-INPUT-FILE LINK-NAME=SNTOUT // SET-RECORD-MAPPING - // OUTPUT-FIELDS = *FIELD - // (INPUT-POSITION = 5, - // INPUT-LENGTH = 4096, - // OUTPUT-POSITION = 1) // END / START-LMS // REORGANIZE-LIBRARY LIBRARY=&(FILE-NAME) // END / WR-TEXT 'FILE &FILE-NAME CREATED' / END-IF / / IF (REC-SIZE = '2064') / "------------------------------------------------------------" / DSORG = 'PAM' / "------------------------------------------------------------" / SHOW-VAR DSORG / DELETE-FILE &(FILE-NAME), SUPPRES-ERR=DMS0533 / CREATE-FILE &(FILE-NAME), SPACE=(1000,500) / ADD-FILE-LINK - / LINK-NAME = PCOUT, - / FILE-NAME = &(FILE-NAME), - / ACC-METHOD = *UPAM, - / BUF-LENGTH = *STD(1) / START-PERCON // ASSIGN-INPUT-FILE LINK-NAME=SNTOUT // SET-RECORD-MAPPING - // OUTPUT-FIELDS = *FIELD - // (INPUT-POSITION = 21, - // INPUT-LENGTH = 2048, - // OUTPUT-POSITION = 1) // END / START-LMS // REORGANIZE-LIBRARY LIBRARY=&(FILE-NAME) // END / WR-TEXT 'FILE &FILE-NAME CREATED' / END-IF / / IF (REC-SIZE = '80 ') / "------------------------------------------------------------" / DSORG = 'LMS' / "------------------------------------------------------------" / SHOW-VAR DSORG / DELETE-FILE &(FILE-NAME), SUPPRES-ERR=DMS0533 / CHANGE-FILE-LINK LINK-NAME=SNTOUT, NEW-NAME=EDTSAM / MOD-JOB-SW ON=(4,5) / START-EDT @ SET 0.0001 @ READ '/' @ DELETE 0.0003 @ CREATE 0.0003 : 'LIB &(FILE-NAME),ANY,BOTH' @ SYSTEM 'REMOVE-FILE-LINK EDTSAM' @ WRITE '#&(FILE-NAME)' OVERWRITE @ HALT / MOD-JOB-SW OFF=(5) / MOD-JOB-SW ON=(1) / ASSIGN-SYSDTA #&(FILE-NAME) / START-PROG &(LMS) / ASSIGN-SYSDTA *SYSCMD / MOD-JOB-SW OFF=(1,4) / WR-TEXT 'FILE &FILE-NAME CREATED' / END-IF / / END-IF / / IF-BLOCK-ERROR / WR-TEXT 'PROCEDURE P.SNTCOD ENDED ABNORMALLY' / ELSE / WR-TEXT 'PROCEDURE P.SNTCOD ENDED NORMALLY' / END-IF / / EXIT-PROCEDURE
Use procedure P.SNTCOD
of library
SRV111.LIB
which is delivered on every BS2000 tape since Nov. 4th,
2002.