Menu

[641a72]: / user / test.spl  Maximize  Restore  History

Download this file

74 lines (58 with data), 1.8 kB

$PROCESS Character string test program.
 /* SPL does not have fixed length character strings.
    All strings are 0 to 4096 characters with the VARYING attribute.

   The SPL compiler requires a number after the keyword CHARACTER
   but this number is ignored.  The keyword VARYING is permitted but
   it is also ignored.  The following statements all do the same thing:
   DECLARE X CHARACTER(1).,
   DECLARE X CHARACTER(6) VARYING.,
   DECLARE X CHARACTER(4096) VARYING.,
   DECLARE X CHARACTER(JUST TYPE ANYTHING) VARYING.,
   DECLARE X CHARACTER(32768).,
   DECLARE X VARYING CHARACTER(*).,
 */

STUFF: PROC;
   DCL I FIXED;
   END STUFF;

STRINGS: PROCEDURE OPTIONS(MAIN);
   DECLARE I FIXED;

   TEST_COMPACTIFY:
      PROCEDURE;
         /* Create a bunch of strings that will fill up the string space */
         DCL (A, N) CHARACTER(*);

         /* $G */
         A, N = '';
         DO I = 0 TO 1024;
            A = A || 'A';
         END;
         DO I = 0 TO 1024;
            N = N || 'N';
         END;

         DO I = 0 TO 20;
            A = 'n' || A;
         END;

         IF SUBSTR(A, 1, I) ^= SUBSTR(N, 1, I) THEN
            DO;
               PUT SKIP LIST('CONCATENATE or COMPACTIFY failed');
               RETURN;
            END;

         PUT SKIP LIST('I =', I);
         PUT SKIP LIST('LENGTH(A) =', LENGTH(A));
         PUT SKIP LIST('SUBSTR(A, 1, I + 1) =', SUBSTR(A, 1, I + 1));

      END TEST_COMPACTIFY;

      /* $ S */
      DCL A CHARACTER(LOTS) VARYING;
      DCL B CHARACTER(*) VARYING;

      A = 'String';
      CALL TEST_COMPACTIFY;

   END STRINGS;

$DATA
$PROCESS Label test
/* $E */
TEST_LABEL: PROCEDURE OPTIONS(MAIN);
   DECLARE I FIXED;

   I = 4; ;
   LAB_A: LAB_B: LAB_C: ;
   LAB_D: LAB_E: LAB_F: ;

END TEST_LABEL;
$DATA
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.