2012-11-13 2 views
1

나는 혼합 된 쉘 스크립트, 펄 스크립트, C 코드 및 'rekening.p'라는 호기심 파일의 누군가의 머드 볼을 조사하고 있습니다.이것은 어떤 파스칼 방언입니까? 그리고 그것은 무엇을합니까?

/*-------------------------------------------------------------------------------- 
    File:  rekening.p 
    Description: Bepalen 868-nummer dossier 
    History:  nabn - 16/04/2004 - Citrix Implementatie (verwijderen van copy-fsk) 
       jedf - 17/02/2010 - F2009/030 (Aanpassingen voor DBC) 
       jedf - 20/12/2010 - F2010/024 (Noor) 
       Pefl - 22/02/2012 - F2012/002 Sequence aanpassing + controle 
--------------------------------------------------------------------------------*/ 
/* Parameters */ 
DEFINE INPUT PARAMETER iHerv  AS INTEGER NO-UNDO. 
DEFINE INPUT PARAMETER cParam AS CHARACTER NO-UNDO. 
DEFINE OUTPUT PARAMETER cDosNr AS CHARACTER NO-UNDO. 

/* Variabelen */ 
DEFINE VARIABLE iZetelNr AS INTEGER NO-UNDO INIT 0. 
DEFINE VARIABLE dDosNr  AS DECIMAL NO-UNDO. 
DEFINE VARIABLE cBron  AS CHARACTER NO-UNDO INIT "":u. 
DEFINE VARIABLE cPrefix  AS CHARACTER NO-UNDO INIT "":u. 
DEFINE VARIABLE cMailParams AS CHARACTER NO-UNDO INIT "":u EXTENT 20. 

DEFINE VARIABLE pvRestIn    AS INTEGER     NO-UNDO. 
DEFINE VARIABLE pvSeqNaamTx    AS CHARACTER     NO-UNDO. 

ASSIGN 
    cParam = REPLACE(cParam, ",":u, ";":u) 
    cParam = TRIM(cParam) 
    cBron = CAPS(ENTRY(1, cParam, ";":u)) 
    NO-ERROR. 

IF NUM-ENTRIES(cParam, ";":u) >= 2 
THEN ASSIGN 
    cPrefix = CAPS(ENTRY(2, cParam, ";":u)) 
    NO-ERROR. 

/* Zet sequence naam voor controle. */ 
CASE cPrefix: 
    WHEN "934":u THEN ASSIGN pvSeqNaamTx = 'seq-banknr-noor':U. 
    WHEN "93489":u THEN ASSIGN pvSeqNaamTx = 'seq-banknr-auxircs':U. 
    OTHERWISE CASE cBron: 
     WHEN "DBC":u THEN . 
     OTHERWISE CASE iHerv: 
      WHEN 1 THEN ASSIGN pvSeqNaamTx = 'seq-banknr':U. 
      WHEN 2 THEN ASSIGN pvSeqNaamTx = 'seq-bankfinnr':U. 
      WHEN 3 THEN ASSIGN pvSeqNaamTx = 'seq-banknr':U. 
      WHEN 4 THEN ASSIGN pvSeqNaamTx = 'seq-banknr-vd':U. 
      WHEN 5 THEN ASSIGN pvSeqNaamTx = 'seq-banknr-cr':U. 
      WHEN 6 THEN ASSIGN pvSeqNaamTx = 'seq-cbk':U. 
     END CASE. 
    END CASE. 
END CASE. 

IF LENGTH(pvSeqNaamTx) > 0 
THEN DO: 
    FIND FIRST fsk._sequence NO-LOCK 
     WHERE fsk._sequence._Seq-name = pvSeqNaamTx 
     NO-ERROR. 
    IF AVAILABLE fsk._sequence 
    AND fsk._sequence._Seq-Max <> ? 
    AND fsk._sequence._Cycle-OK = FALSE 
    THEN DO: 
    ASSIGN 
     pvRestIn = DYNAMIC-CURRENT-VALUE(pvSeqNaamTx, 'fsk':U) 
    . /* ff voor de debug. */ 
     pvRestIn = (fsk._sequence._Seq-Max - DYNAMIC-CURRENT-VALUE(pvSeqNaamTx, 'fsk':U))/fsk._sequence._Seq-Incr 
     . 
    IF pvRestIn < 500 
    THEN DO: 
     ASSIGN 
     cMailParams[1] = pvSeqNaamTx 
     cMailParams[2] = STRING(pvRestIn) 
    . 
    RUN programs/RootMail.p 
    (INPUT '868':U 
    ,INPUT cMailParams 
    ). 


    END. 
    END. 
END. 

CASE cPrefix: 
    WHEN "934":u THEN ASSIGN cDosNr = "9348":u + STRING(NEXT-VALUE(seq-banknr-noor , fsk), "999999":u). 
    WHEN '93489':U THEN ASSIGN cDosNr = '9348':U + STRING(NEXT-VALUE(seq-banknr-auxircs, fsk), '999999':U). 
    OTHERWISE CASE cBron: 
     WHEN "DBC":u THEN DO: 
      ASSIGN iZetelNr = INTEGER(ENTRY(2, cParam, ";":u)) NO-ERROR. 

      /* Waarschuwing sturen via e-mail dat 868-reeks bijna vol is */ 
      IF CURRENT-VALUE(seq-banknr-dbc-fr, fsk) >= 49500    /* 868330 - 868334 = Franstalige klanten  */ 
       OR CURRENT-VALUE(seq-banknr-dbc-nl, fsk) >= 99500 THEN DO: /* 868335 - 868339 = Nederlandstalige klanten */ 
       ASSIGN cMailParams[1] = (IF (iZetelNr = 0) THEN "330":u 
                  ELSE "335":u). 
       RUN programs/RootMail.p(INPUT "868":u, 
             INPUT cMailParams). 
      END. 

      CASE iZetelNr: 
       WHEN 0 THEN ASSIGN cDosNr = "86833":u + STRING(NEXT-VALUE(seq-banknr-dbc-fr, fsk), "99999":u). 
       WHEN 1 THEN ASSIGN cDosNr = "86833":u + STRING(NEXT-VALUE(seq-banknr-dbc-nl, fsk), "99999":u). 
      END CASE. 
     END. 
     OTHERWISE CASE iHerv: 
      WHEN 1 THEN ASSIGN cDosNr = "8686":u + STRING(NEXT-VALUE(seq-banknr, fsk), "999999":u). 
      WHEN 2 THEN ASSIGN cDosNr = "8685":u + STRING(NEXT-VALUE(seq-bankfinnr, fsk), "999999":u). 
      WHEN 3 THEN ASSIGN cDosNr = "8686":u + STRING(NEXT-VALUE(seq-banknr, fsk), "999999":u). 
      WHEN 4 THEN ASSIGN cDosNr = "8688":u + STRING(NEXT-VALUE(seq-banknr-vd, fsk), "999999":u). 
      WHEN 5 THEN ASSIGN cDosNr = "8689":u + STRING(NEXT-VALUE(seq-banknr-cr, fsk), "999999":u). 
      WHEN 6 THEN ASSIGN cDosNr = "8687":u + STRING(NEXT-VALUE(seq-cbk, fsk), "999999":u). 
     END CASE. 
    END CASE. 
END CASE. 


/* Bepalen controlenummer */ 
ASSIGN dDosNr = DEC(cDosNr). 
DO WHILE dDosNr > 2100000000: 
    ASSIGN dDosNr = dDosNr - 970000000. 
END. 
IF dDosNr MOD 97 = 0 
    THEN ASSIGN cDosNr = cDosNr + "97":u. 
    ELSE ASSIGN cDosNr = cDosNr + STRING(dDosNr MOD 97, "99":u). 

이것이 파스칼 방언 일까? 추가 포인트는 무엇을합니까?

미리 감사드립니다.

답변

4

이것은 현재 진행중인 OpenEdge Advanced Business Language로도 알려져 있습니다.

http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language도 참조하십시오.

+0

흥미 롭습니다! 그것에 대해 들어 본 적이 없지만 그 것처럼 보입니다. 이 'fsk'는 어떤 아이디어일까요? 아니면 다이내믹 - 현재 가치가 무엇입니까? – greyfairer

+2

fsk는 데이터베이스 별칭 (또는 이름)입니다. DYNAMIC-CURRENT-VALUE()는 "pvSeqNaamTx"변수에 지정된 시퀀스의 현재 값을 가져옵니다 (CASE 문에서 설정). 시퀀스는 자동 번호 매기기 장치입니다. –

1

예, 실제로 진행 ABL입니다.

이름이 rekening.p 인 경우 네덜란드어이며, 네덜란드어 인 경우도 있습니다. 변수 cBroncSource (bron = source)으로 설명 할 수 있습니다.

이 프로그램의 주된 이유는 새로운 인보이스 번호를 반환하는 것입니다.

비즈니스/고객 (noor/auxircs)에 대한 정보가 포함 된 2 개의 입력 매개 변수를 수신합니다. 해당 정보를 기반으로 올바른 시퀀스이 사용 가능한 다음 (새) 번호를 반환하는 데 사용됩니다.

관련 문제