Consultor Eletrônico



Kbase P122615: 4GL/ABL: How to Programmatically dump and load the _sequence table?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   1/15/2009
Status: Verified

GOAL:

4GL/ABL: How to Programmatically dump and load the _sequence table?

GOAL:

How to generate 4GL/ABL code to load the sequence values of a Progress 4GL database?

GOAL:

How to generate 4GL/ABL code to dump the sequence values of a Progress 4GL database?

FACT(s) (Environment):

All Supported Operating Systems
Progress 9.x
OpenEdge 10.x

FIX:

1. Running the following code against the sports2000 database generates a 4GL procedure to dump the sequence values of the database:
/* GenerateCodeToDumpSequenceValues.p */
OUTPUT TO DumpSequenceValues.p.
PUT UNFORMATTED "OUTPUT TO _SeqVals.d." SKIP.
FOR EACH _Sequence no-lock:
PUT UNFORMATTED
" EXPORT " _Sequence._Seq-Num " " QUOTER(_Sequence._Seq-Name) " CURRENT-VALUE( " _seq-name ")." SKIP.
END.
PUT UNFORMATTED "OUTPUT CLOSE.".
OUTPUT CLOSE.
Running the above procedure generates the following code to dump the sequence values of the sports2000 database:
/* DumpSequenceValues.p */
OUTPUT TO _SeqVals.d.
EXPORT 9 "NextBinNum" CURRENT-VALUE( NextBinNum).
EXPORT 0 "NextCustNum" CURRENT-VALUE( NextCustNum).
EXPORT 11 "NextEmpNum" CURRENT-VALUE( NextEmpNum).
EXPORT 1 "NextInvNum" CURRENT-VALUE( NextInvNum).
EXPORT 12 "NextInvTransNum" CURRENT-VALUE( NextInvTransNum).
EXPORT 3 "NextItemNum" CURRENT-VALUE( NextItemNum).
EXPORT 7 "NextLocalDefNum" CURRENT-VALUE( NextLocalDefNum).
EXPORT 2 "NextOrdNum" CURRENT-VALUE( NextOrdNum).
EXPORT 10 "NextPONum" CURRENT-VALUE( NextPONum).
EXPORT 4 "NextRefNum" CURRENT-VALUE( NextRefNum).
EXPORT 6 "NextSupplNum" CURRENT-VALUE( NextSupplNum).
EXPORT 5 "NextVisitor" CURRENT-VALUE( NextVisitor).
EXPORT 8 "NextWareNum" CURRENT-VALUE( NextWareNum).
OUTPUT CLOSE.
2. Running the following code against the sports2000 database generates a 4GL procedure to load the sequence values of the database:
/* GenerateCodeToLoadSequenceValues.p */
OUTPUT TO "LoadSequqveValues.p".
PUT UNFORMATTED
"DEFINE VARIABLE SequenceNumber AS CHARACTER NO-UNDO." SKIP
"DEFINE VARIABLE SequenceName AS CHARACTER NO-UNDO." SKIP
"DEFINE VARIABLE SequenceCurrentValue AS INTEGER NO-UNDO." SKIP
"INPUT FROM _SeqVals.d." SKIP
"REPEAT:" SKIP
" IMPORT SequenceNumber SequenceName SequenceCurrentValue." SKIP
" CASE SequenceName:" SKIP.
FOR EACH _Sequence NO-LOCK:
PUT UNFORMATTED
" WHEN " QUOTER(_Seq-Name) " THEN CURRENT-VALUE(" _Seq-Name ") = SequenceCurrentValue." SKIP.
END.
PUT UNFORMATTED
" END CASE."SKIP
"END." SKIP
"INPUT CLOSE." SKIP.
OUTPUT CLOSE.
Running the above procedure generates the following code to load the sequence values of the sports2000 database:
/* LoadSequqveValues.p */
DEFINE VARIABLE SequenceNumber AS CHARACTER NO-UNDO.
DEFINE VARIABLE SequenceName AS CHARACTER NO-UNDO.
DEFINE VARIABLE SequenceCurrentValue AS INTEGER NO-UNDO.
INPUT FROM _SeqVals.d.
REPEAT:
IMPORT SequenceNumber SequenceName SequenceCurrentValue.
CASE SequenceName:
WHEN "NextBinNum" THEN CURRENT-VALUE(NextBinNum) = SequenceCurrentValue.
WHEN "NextCustNum" THEN CURRE.NT-VALUE(NextCustNum) = SequenceCurrentValue.
WHEN "NextEmpNum" THEN CURRENT-VALUE(NextEmpNum) = SequenceCurrentValue.
WHEN "NextInvNum" THEN CURRENT-VALUE(NextInvNum) = SequenceCurrentValue.
WHEN "NextInvTransNum" THEN CURRENT-VALUE(NextInvTransNum) = SequenceCurrentValue.
WHEN "NextItemNum" THEN CURRENT-VALUE(NextItemNum) = SequenceCurrentValue.
WHEN "NextLocalDefNum" THEN CURRENT-VALUE(NextLocalDefNum) = SequenceCurrentValue.
WHEN "NextOrdNum" THEN CURRENT-VALUE(NextOrdNum) = SequenceCurrentValue.
WHEN "NextPONum" THEN CURRENT-VALUE(NextPONum) = SequenceCurrentValue.
WHEN "NextRefNum" THEN CURRENT-VALUE(NextRefNum) = SequenceCurrentValue.
WHEN "NextSupplNum" THEN CURRENT-VALUE(NextSupplNum) = SequenceCurrentValue.
WHEN "NextVisitor" THEN CURRENT-VALUE(NextVisitor) = SequenceCurrentValue.
WHEN "NextWareNum" THEN CURRENT-VALUE(NextWareNum) = SequenceCurrentValue.
END CASE.
END.
INPUT CLOSE..