Menu

basic cobol postgres question sequences primary keys nullable

J McNamara
2024-10-12
2024-10-12
  • J McNamara

    J McNamara - 2024-10-12

    ocesql=# \d tsequence
    Table "public.tsequence"
    Column | Type | Collation | Nullable | Default
    ------------+-----------------------+-----------+----------+---------------------------------------
    seq_key | character varying(18) | | not null |
    trans_type | numeric | | |
    trans_desc | text | | |
    id | integer | | not null | nextval('tsequence_id_seq'::regclass)
    Indexes:
    "tsequence_pkey" PRIMARY KEY, btree (id)

    ocesql=#

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SEQUENCETRACKER.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
    
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-BASE-YEAR                PIC 9(4).
       01 WS-MONTH                    PIC 9(2).
       01 WS-MYID                     PIC 9(11).
       01 WS-SEQUENCE-NUM             PIC 9(9) VALUE 1.
       01 WS-FORMATTED-SEQ            PIC X(18).
       01 WS-TRANSACTION-TYPE         PIC 9(3).
       01 WS-TRANSACTION-DESC         PIC X(50).
       01 SQL-CURSOR                  PIC S9(4) COMP.
       01 SQLCA.
           05 SQLCAID                  PIC X(8).
           05 SQLCABC                  PIC S9(9) COMP-5.
           05 SQLCODE                  PIC S9(9) COMP-5.
           05 SQLERRM.
               49 SQLERRML              PIC S9(4) COMP-5.
               49 SQLERRMC              PIC X(70).
           05 SQLSTATE                 PIC X(5).
    

    OCESQL EXEC SQL INCLUDE SQLCA END-EXEC.
    ***********

       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
           DISPLAY "ENTER BASE YEAR (YYYY):".
           ACCEPT WS-BASE-YEAR.
           DISPLAY "ENTER MONTH (MM):".
           ACCEPT WS-MONTH.
           DISPLAY "TRANSACTION TYPE (3 DIGIT):".
           ACCEPT WS-TRANSACTION-TYPE.
    
           PERFORM FORMAT-SEQUENCE.
           DISPLAY "FORMATTED SEQUENCE: ", WS-FORMATTED-SEQ.
    
           DISPLAY "TRANSACTION DESC:".
           ACCEPT WS-TRANSACTION-DESC.
    
           DISPLAY "MYID ENTER:".
           ACCEPT WS-MYID.
    
    
           PERFORM SAVE-RECORD.
    
           DISPLAY "RECORD SAVED. PRESS ENTER TO EXIT.".
           ACCEPT WS-TRANSACTION-DESC.
    
           STOP RUN.
    
       FORMAT-SEQUENCE.
           STRING WS-TRANSACTION-TYPE DELIMITED BY SIZE
                  "-" DELIMITED BY SIZE
                  WS-BASE-YEAR DELIMITED BY SIZE
                  WS-MONTH DELIMITED BY SIZE
                  FUNCTION NUMVAL-C(WS-SEQUENCE-NUM) DELIMITED BY SIZE
                  INTO WS-FORMATTED-SEQ
           END-STRING.
    
       SAVE-RECORD.
    

    OCESQL EXEC SQL
    OCESQL
    BEGIN
    OCESQL END-EXEC.
    OCESQL
    EXEC SQL
    OCESQLINSERT INTO TSEQUENCE (SEQ_KEY, TRANS_TYPE, TRANS_DESC, ID)
    OCESQL
    VALUES (:WS-FORMATTED-SEQ, :WS-TRANSACTION-TYPE,
    OCESQL:WS-TRANSACTION-DESC, :WS-MYID);
    OCESQL
    ND-EXEC.
    OCESQL EXEC SQL
    OCESQL
    COMMIT
    OCESQL* END-EXEC.

           DISPLAY "Inserting Record with Values:".
           DISPLAY "SEQ_KEY: ", WS-FORMATTED-SEQ.
           DISPLAY "TRANS_TYPE: ", WS-TRANSACTION-TYPE.
           DISPLAY "TRANS_DESC: ", WS-TRANSACTION-DESC.
           DISPLAY "MYID", WS-MYID.
    
           IF SQLCODE NOT = 0
                DISPLAY SQLSTATE, SQLCODE
           ELSE
                DISPLAY "RECORD SUCCESSFULLY INSERTED.".
    
    
       END PROGRAM SEQUENCETRACKER.
    

    hi guys-

    i thought this would insert a value into the table but it is not unless i use a real insert in pgsql.exe -U postgres -h localhost

    any idea, it isnt serial and I thought that should fly.

    for the values i put in this and get back these....

    $> ./SEQGEN.exe
    ENTER BASE YEAR (YYYY):
    2024
    ENTER MONTH (MM):
    10
    TRANSACTION TYPE (3 DIGIT):
    001
    FORMATTED SEQUENCE: 001-202410☺
    TRANSACTION DESC:
    NNN
    MYID ENTER:
    1
    Inserting Record with Values:
    SEQ_KEY: 001-202410☺
    TRANS_TYPE: 001
    TRANS_DESC: NNN
    MYID00000000001
    RECORD SUCCESSFULLY INSERTED.
    RECORD SAVED. PRESS ENTER TO EXIT.

    thanks guys,
    jim

    Sent with Proton Mail secure email.

     
    • J McNamara

      J McNamara - 2024-10-12

      I FIGURED IT OUT POST IN A MINUTE OR TWO THANKS

      Sent with Proton Mail secure email.

      On Saturday, October 12th, 2024 at 4:51 PM, J McNamara masticon@users.sourceforge.net wrote:

      ocesql=# \d tsequence
      Table "public.tsequence"
      Column | Type | Collation | Nullable | Default
      ------------+-----------------------+-----------+----------+---------------------------------------
      seq_key | character varying(18) | | not null |
      trans_type | numeric | | |
      trans_desc | text | | |
      id | integer | | not null | nextval('tsequence_id_seq'::regclass)
      Indexes:
      "tsequence_pkey" PRIMARY KEY, btree (id)

      ocesql=#

      IDENTIFICATION DIVISION.
      PROGRAM-ID. SEQUENCETRACKER.
      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.

      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 WS-BASE-YEAR PIC 9(4).
      01 WS-MONTH PIC 9(2).
      01 WS-MYID PIC 9(11).
      01 WS-SEQUENCE-NUM PIC 9(9) VALUE 1.
      01 WS-FORMATTED-SEQ PIC X(18).
      01 WS-TRANSACTION-TYPE PIC 9(3).
      01 WS-TRANSACTION-DESC PIC X(50).
      01 SQL-CURSOR PIC S9(4) COMP.
      01 SQLCA.
      05 SQLCAID PIC X(8).
      05 SQLCABC PIC S9(9) COMP-5.
      05 SQLCODE PIC S9(9) COMP-5.
      05 SQLERRM.
      49 SQLERRML PIC S9(4) COMP-5.
      49 SQLERRMC PIC X(70).
      05 SQLSTATE PIC X(5).

      OCESQL EXEC SQL INCLUDE SQLCA END-EXEC.*****

      PROCEDURE

      DIVISION

      .

      MAIN

      -

      PROCEDURE

      .

      DISPLAY

      "ENTER BASE YEAR (YYYY):"

      .

      ACCEPT

      WS

      -

      BASE

      -

      YEAR

      .

      DISPLAY

      "ENTER MONTH (MM):"

      .

      ACCEPT

      WS

      -

      MONTH

      .

      DISPLAY

      "TRANSACTION TYPE (3 DIGIT):"

      .

      ACCEPT

      WS

      -

      TRANSACTION

      -

      TYPE

      .

      PERFORM

      FORMAT

      -

      SEQUENCE

      .

      DISPLAY

      "FORMATTED SEQUENCE: "

      ,

      WS

      -

      FORMATTED

      -

      SEQ

      .

      DISPLAY

      "TRANSACTION DESC:"

      .

      ACCEPT

      WS

      -

      TRANSACTION

      -

      DESC

      .

      DISPLAY

      "MYID ENTER:"

      .

      ACCEPT

      WS

      -

      MYID

      .

      PERFORM

      SAVE

      -

      RECORD

      .

      DISPLAY

      "RECORD SAVED. PRESS ENTER TO EXIT."

      .

      ACCEPT

      WS

      -

      TRANSACTION

      -

      DESC

      .

      STOP

      RUN

      .

      FORMAT

      -

      SEQUENCE

      .

      STRING

      WS

      -

      TRANSACTION

      -

      TYPE

      DELIMITED

      BY

      SIZE

      "-"

      DELIMITED

      BY

      SIZE

      WS

      -

      BASE

      -

      YEAR

      DELIMITED

      BY

      SIZE

      WS

      -

      MONTH

      DELIMITED

      BY

      SIZE

      FUNCTION

      NUMVAL

      -

      C

      (

      WS

      -

      SEQUENCE

      -

      NUM

      )

      DELIMITED

      BY

      SIZE

      INTO

      WS

      -

      FORMATTED

      -

      SEQ

      END

      -

      STRING

      .

      SAVE

      -

      RECORD

      .

      OCESQL EXEC SQL
      OCESQL BEGIN
      OCESQL END-EXEC.
      OCESQLEXEC SQL
      OCESQLINSERT INTO TSEQUENCE (SEQ_KEY, TRANS_TYPE, TRANS_DESC, ID)
      OCESQLVALUES (:WS-FORMATTED-SEQ, :WS-TRANSACTION-TYPE,
      OCESQL:WS-TRANSACTION-DESC, :WS-MYID);
      OCESQL ND-EXEC.
      OCESQL EXEC SQL
      OCESQL COMMIT
      OCESQL* END-EXEC.

      DISPLAY

      "Inserting Record with Values:"

      .

      DISPLAY

      "SEQ_KEY: "

      ,

      WS

      -

      FORMATTED

      -

      SEQ

      .

      DISPLAY

      "TRANS_TYPE: "

      ,

      WS

      -

      TRANSACTION

      -

      TYPE

      .

      DISPLAY

      "TRANS_DESC: "

      ,

      WS

      -

      TRANSACTION

      -

      DESC

      .

      DISPLAY

      "MYID"

      ,

      WS

      -

      MYID

      .

      IF

      SQLCODE

      NOT

      =

      0

      DISPLAY

      SQLSTATE

      ,

      SQLCODE

      ELSE

      DISPLAY

      "RECORD SUCCESSFULLY INSERTED."

      .

      END

      PROGRAM

      SEQUENCETRACKER

      .

      hi guys-

      i thought this would insert a value into the table but it is not unless i use a real insert in pgsql.exe -U postgres -h localhost

      any idea, it isnt serial and I thought that should fly.

      for the values i put in this and get back these....

      $> ./SEQGEN.exe
      ENTER BASE YEAR (YYYY):
      2024
      ENTER MONTH (MM):
      10
      TRANSACTION TYPE (3 DIGIT):
      001
      FORMATTED SEQUENCE: 001-202410☺
      TRANSACTION DESC:
      NNN
      MYID ENTER:
      1
      Inserting Record with Values:
      SEQ_KEY: 001-202410☺
      TRANS_TYPE: 001
      TRANS_DESC: NNN
      MYID00000000001
      RECORD SUCCESSFULLY INSERTED.
      RECORD SAVED. PRESS ENTER TO EXIT.

      thanks guys,
      jim

      Sent with Proton Mail secure email.


      basic cobol postgres question sequences primary keys nullable


      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/gnucobol/discussion/help/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       

Anonymous
Anonymous

Add attachments
Cancel