Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 5129

Other programming languages • Re: GnuCOBOL

$
0
0
Yes GnuCOBOL/OpenCOBOL works very well on the raspberry pi. Over the years i've used it to twiddle the gpio on a raspberry pi using the sockets library as well as normal COBOLy type things
found one of the hds with some of the COBOL+gpio programs on it

very mickey mouse but got the job done

Code:

       IDENTIFICATION DIVISION.       PROGRAM-ID. pigpiod-client.       ENVIRONMENT DIVISION.       CONFIGURATION SECTION.       INPUT-OUTPUT SECTION.       DATA DIVISION.       FILE SECTION.       WORKING-STORAGE SECTION.       COPY "PIGPIO_COMMANDS.CPY".       01 IP         PIC X(15) VALUE "192.168.0.11".       01 PORT       PIC X(4) VALUE "8888".       01 HNDL       PIC X(4).       01 PIN        PIC 9(2).       01 COMMAND.          02 CMD     USAGE IS BINARY-LONG UNSIGNED SYNC.          02 P1      USAGE IS BINARY-LONG UNSIGNED SYNC.          02 P2      USAGE IS BINARY-LONG UNSIGNED SYNC.          02 P3      USAGE IS BINARY-LONG UNSIGNED SYNC.          02 EXT-LEN REDEFINES P3 USAGE IS BINARY-LONG UNSIGNED SYNC.          02 RES     REDEFINES P3 USAGE IS BINARY-LONG UNSIGNED SYNC.       01 BUFF       PIC X(64000).       01 BYTES_SEND PIC 9(5).       01 BYTES_RECV PIC 9(5).       01 RESULT     PIC 9(3).       01 DUMMY      pic x.       PROCEDURE DIVISION.       START-PROC.      * Initialise        MOVE 25 TO PIN        MOVE ZERO to COMMAND        MOVE PIGPIO_COMMANDS_PWM to CMD.        MOVE PIN to P1.        MOVE 255 TO P2.        MOVE ZERO TO P3.        CALL "CBL_OC_DUMP" USING COMMAND.      * Connect to pigpiod socket              DISPLAY "CONNECTING TO PIGPIOD".              CALL "CBL_OC_SOCKET"                   USING "02" IP PORT HNDL GIVING RESULT              END-CALL.              PERFORM HANDLE-ERROR.      * write 255 dutycycle to GPIO              DISPLAY "SET 255 DUTYCYCLE PWM ON GPIO 25 (BRIGHT)".              MOVE 16 TO BYTES_SEND.              MOVE 16 TO BYTES_RECV.              CALL "CBL_OC_SOCKET"                   USING "05" HNDL BYTES_SEND BYTES_RECV COMMAND                     GIVING RESULT              END-CALL.              PERFORM HANDLE-ERROR.      * sleep for 3 seconds              DISPLAY "ZZZZZZZZ FOR 3 SECONDS".              CALL "C$SLEEP" USING "3" END-CALL.      * write 0 dutycycle to GPIO              DISPLAY "SET 0 DUTYCYCLE PWM ON GPIO 25 (OFF)".              MOVE ZERO TO P2.              CALL "CBL_OC_DUMP" USING COMMAND.              MOVE 16 TO BYTES_SEND.              MOVE 16 TO BYTES_RECV.              CALL "CBL_OC_SOCKET"                   USING "05" HNDL BYTES_SEND BYTES_RECV COMMAND                     GIVING RESULT              END-CALL.              PERFORM HANDLE-ERROR.              STOP RUN.       HANDLE-ERROR SECTION.              DISPLAY "SOCKET RESULT IS :" RESULT.              DISPLAY "PIGPIOD RESULT IS:" P3.              IF RESULT NOT = 0              THEN                   CALL "CBL_OC_SOCKET" USING "99" GIVING RESULT                   DISPLAY "OS-ERROR: " RESULT                   ACCEPT DUMMY                   STOP RUN              END-IF.

Statistics: Posted by ukscone — Sun Mar 17, 2024 5:35 pm



Viewing all articles
Browse latest Browse all 5129

Trending Articles