**************************************************************** * * COMMENT SECTION * * DATE 1993/11/10 EMBEDDED COBOL LANGUAGE * NIST SQL VALIDATION TEST SUITE V6.0 * DISCLAIMER: * This program was written by employees of NIST to test SQL * implementations for conformance to the SQL standards. * NIST assumes no responsibility for any party's use of * this program. * * DML108.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * This routine tests more DATETIME features in Transitional * SQL. This is the non-dynamic version of DML109. * * REFERENCES * FIPS PUB 127-2 14.1 Transitional SQL * ANSI SQL-1992 * *
EXECBEGIN END-EXEC
01 SQLCODE CALL" * ANSI SQL-1992
1
01 uid 1 THE-TIME)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
0DISPLAYjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 23
1 int1END-IF
01 int2 IF EXECEND DECLARE END-EXEC
01 norm1
01norm2 S9)DISPLAYLEADINGSEPARATE
01 ALPNUM-TABLE VALUEIS
02MOVETO
05 ALPNUM
.
05 NORMSQX X OCCURS TIMES
0 SQL"-yteID" *date_time declaration
-DAYPIC 96)
01 THE-TIME PIC 9(8).
01 flag PIC TO-DAY DATE
01 SQL-COD PIC S9DISPLAYTEd#
PROCEDUREDIVISION.
P0.
MOVE"FLATER "TOACCEPTTHE-TIME FROMTIME CALL"AUTHID" 1 TO flag MOVE java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 EXECSQLSELECTINTO :uidx MOVE SQLCODE TO SQL-COD DISPLAY" DATETIME ,setfns()" MOVE SQLCODE TODISPLAY"FIPSPUB1- 41Transitional java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 if (uid - 5, " 71 value constructor>java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
- " connected" STOPRUN END-IF MOVE"xxxxx"TOSQLSTATE
DISPLAY
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY
java.lang.StringIndexOutOfBoundsException: Range [20, 11) out of bounds for length 23 DISPLAY"TEd Version #" *date_time print ACCEPTDATE ACCEPT THE-TIME " DATE," DISPLAY"Date ISPLAY"DISPLAY"LUNCHINTERVALHOURTO)"
******************** BEGIN TEST0617 *******************
TIMESTAMP
DISPLAY"CREATE VIEW SUBQ1 AS" DISPLAY" SELECT MIN (HOUR_IN) AS TOO_EARLY," DISPLAYDISPLAY" DISPLAY AVG)AS" DISPLAY"EXEC SQL COMMITT)AS LATESTjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 " APPT) SUMAPPT FROMTEMPS; EXECDISPLAY" SELECT MIN (HOUR_IN) AS TOO_EARLY
MAX (ALLSTART) AS LATESTDISPLAYROMTEMPS
H)AS
AVG (DISTINCT LUNCH " '4' DAY," SUM (APPT) CHCKOK DISPLAY java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 MOVE SQLCODEDISPLAY"INTERVAL':0 HOUR MINUTE)" PERFORM
LAY
1-111" DISPLAYTIMESTAMP1 22:14" DISPLAY" DATE '1993-11-12'," DISPLAY"TIME'08:000,java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 DISPLAY" DISPLAYINTERVAL' DISPLAY" 19-10115:'java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 "TIME 160 DISPLAYINTERVAL TO"
EXEC'63:0, '931-0122514java.lang.StringIndexOutOfBoundsException: Range [0, 45) out of bounds for length 31 '1993-11-12', '4', '08:30:00', '1:3:0', '1:00') END-EXEC TO
PERFORM "java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
DISPLAYDISPLAY" INTO TEMPSVALUES ("
ISPLAY1311 315:',java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 DISPLAY"DATE'993-1115,java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
DISPLAY" INTERVAL 'DISPLAY "TIME0:0,java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 DISPLAY" TIME '08:30:00'," DISPLAY" TIME DISPLAY "'0:30' HOUR MINUTE "INTERVAL ':3' OUR MINUTE);"
EXECSQLINSERTINTO'1993-1-103:514, '19931-01 java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 19 '1993-11-15', '5',
80:0 ':0)END-EXEC '17:30:ODE TO SQL-COD '0:30') END-EXEC
SQLCODE DISPLAY "
PERFORMDISPLAYINSERT EMPS( DISPLAY'9931-17 0:6:8'java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
DISPLAY"INSERT INTO TEMPS VALUES (" DISPLAY" TIMESTAMP '1993-11-17 09:56:48'," DISPLAY" DATE '1994-11-18'," DISPLAY INTERVAL3 ,java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 DISPLAY" TIME '09:00:00',"
0:0'" DISPLAY" INTERVAL '1:00' HOUR TO MINUTE);"
QLINSERTINTOVALUESjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 ' '19--11'java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 '3,
3, '09:00:00', ''1700:00,
10' MOVE SQLCODE"shouldbe1 valueis"int1
CHCKOK DISPLAY"
*= <> < > <= >=
int1- COMPUTEint1-java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 DISPLAY" FROM TEMPS WHERE" DISPLAY"LUNCH INTERVAL'10'HOUR TO MINUTE;"
(TEMPS FROMjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
LUNCH < '1:00'END-EXEC
WHERE
COMPUTE int1 ( NOT = 1 then DISPLAYEND-IF DISPLAY java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "
EXEC FT"
W
< ':0 ISPLAY"START>DATE 19-12;java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 MOVE SQLCODE TO SQL-COD " TEMPS WHERE
PERFORM
be its ",int1 if (int1 NOT = 3) then MOVE SQL-COD END-IFLUNCH':0 END-EXEC
COMPUTE = -1 DISPLAY DISPLAY" OVE java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 DISPLAY" (int1 NOT )then MOVEjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
EXECSQLDATE9-11- FROM TEMPS (* :int1 STARTFROM WHERE START<> 19 DISPLAY" START>D 1931-15'java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
OVE TO SQL-COD
PERFORMjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY"int1 should be 1; its valueis",java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(int1 =1then
0 TO
if (int1 NOT = 1-1'END-EXEC
COMPUTE int1 = -1
DISPLAY"D int1should be1 valueis " java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 DISPLAY" START = DATE '1993-11-15D " TEMPS java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 DISPLAY int1SQL*INTOint1
EXECSQLSELECTDISPLAY" FROM TEMPS TO PERFORM
= 193-1-2 MOVE
PERFORM DISPLAYshould"java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 if( = )then MOVE flag END-IF
PERFORM CHCKOK DISPLAYint1 if (int1 DISPLAY"int1 shouldbe 2 its value FROMTEMPSWHERE MOVE 0 TO flagHOUR_OUT'7:0:00 END-EXEC END-IF
OMPUTEPERFORMjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 DISPLAY"SELECT COUNT(*) INTO :int1" DISPLAY" FROM TEMPS WHERE"
MVE lag
EXECDISPLAY java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 FROM WHERE
HOUR_OUT >= DISPLAYDISPLAY"TIMESTAMP 19-11java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 MOVE QL-COD
PERFORM EXEC (*INTOint1 if (int1 NOT = 2) then'9--02::9
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 29
*BETWEEN
=-java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 SELECTint1 DISPLAY" DISPLAY" ENTERED BETWEEN TIMESTAMP '1993-11-10 00:00:00java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
- O0TO
D "SELECT (*)
- " 23:59:59';"
()I int1 FROM int1= -1
BETWEEN3110::DISPLAY TEMPS
TIMESTAMPENTERED--")java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 MOVE SQLCODE TO SQL-COD
CHCKOK DISPLAY"int1 should be EXEC SQL SE (* int1 if( NOT )then MOVE 0 TO flag END-IF
*IN
COMPUTE'19931110 2:99' DISPLAYSELECT java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 DISPLAY" FROM TEMPS WHERE" DISPLAY" HOUR_OUT IN" " SELECTHOUR_IN+I '8 ROM
- MOVE =2)then EXECSQLSELECT*IS NULL -- see test 0621 FROM TEMPS WHERE
HOUR_OUT IN
(SELECT HOUR_IN + INTERVAL '8' HOUR DISPLAY" MOVE TOjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 MOVETOSQL-COD
CHCKOK
should ; value if (int1 (START) java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 MOVE"( HOUR_IN + INTERVAL '8' HOURFROM END-IF
*IS NULL -- see test 0621
*OVERLAPS (tested once already in DML106-7)
COMPUTE HOUR_ININTERVAL8 HOUR TEMPSEND-EXEC DISPLAYCOUNT*M0 java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 "FROM " DISPLAY
" EXECSQLNOT)
TEMPS "
(START
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SQLCODE SQL-COD
PERFORM*OVERLAPS (tested once already in DML106-7) " hould be2 java.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 60
int1=java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
0 TOjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 END-IF"(TART ) OVERLAPS"
*ALL, SOME, ANY qualifiers (brief test)
COMPUTE int1 = SQL DISPLAYSELECTINTO int1 be ; alue" int1 DISPLAY" FROM TEMPS WHERE" DISPLAY" DISPLAY" (SELECT HOUR_IN int1= 1
- " TEMPS);java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY; EXTRACT " FROM
HOUR_OUT =P )"
(java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0 MOVE SQLCODEFROM java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
PERFORM CHCKOK DISPLAY"int1 should be 2; its value is ", int1
=2)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
0 TO END-IF - "TEMPS);"
COMPUTE int1shouldint1 DISPLAYSELECT int1 DISPLAYTO DISPLAY" EXTRACT (YEAR FROM ENTERED) <> SOME" DISPLAY" (SELECT ( HOUR_IN + INTERVAL '8' HOUR FROM TEMPS) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY" SQLCODE TO SQL-COD
SQLSELECT (* :int1 FROM TEMPS WHERE " should be 2; its value is " int1
EXTRACT = -
(SELECT EXTRACT 0 flag FROM TEMPS
K DISPLAY " TEMPS if (DISPLAY( (
0 TO
*The following query would be helpful in finding errors in *the data.
COMPUTE int1 = -1 " ) END-EXEC " DISPLAYEXTRACT java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY" (SELECT0 . DISPLAY" FROM " shouldPERFORMCHCKOK
EXECSELECTINTOjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
TEMPS
EXTRACT < 0 TO
(SELECT EXTRACT FROM TEMPS) END-EXEC MOVE SQLCODE TO SQL-COD
PERFORM CHCKOK
int1 e1 its is, if (int1 NOT = 1) then
OVEfjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
*Set Functions
*Find the most insanely early hour of the morning that anybody *has to work
DISPLAY"SELECT EXTRACT DISPLAY" * 0 +EXTRACT MINUTE TOO_EARLYjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 DISPLAY" INTO : SQLCODE SQL-COD
COMPUTE int1 = -1 EXECSQLSELECT EXTRACT java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
* 100 + EXTRACT INTOSUBQ1 MOVESQLCODE " 0 FROM"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY"int1 should be 830; its value is ", int1 if (int1 NOT = 830) then MOVE 0 TO END-IF
*Find the start date of the latest-starting appointment
DISPLAY"SELECT EXTRACT (YEAR FROM LATEST)," DISPLAYEXTRACT00+ DISPLAY" EXTRACT (DAY FROM LATEST)" DISPLAY" INTO:int1 :int2 FROM SUBQ1;"
COMPUTE int1 = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 COMPUTEint2-java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 EXECSQL LATEST
EXTRACT*MOVE Oflag
EXTRACT INTO*Find the start date of the latest-starting appointment MOVEEXECSQL LATEST
PERFORM CHCKOK DISPLAY"int1 should be 19 DISPLAY"DAY LATEST
( 4 java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
T int2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 DISPLAY"int2 should be 1118; its value is ", int2 "int1EXTRACT 10 java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 ifint2 = 118)then MOVE0 flag END-IF int211;its",int2
*Find the average lunch period.
DISPLAY OVE flag
1+MINUTE" DISPLAY" INTO :
COMPUTE 0 DISPLAY" )java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 EXECSQL
1 INTOEXECSELECT
SQLCODESQL-COD
*Numeric truncation might result in a 49 here. 4.4.1 says that *the choice of whether to truncate or round is implementation- *defined.
PERFORM CHCKOK DISPLAY"int1 should be 50; its value is ", int1 "INTO: *defined. if (int1 " truncation is allowed.4 .java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 END-IF ifint1 int1 MOVE 0 TO" s .4 s. END-IF
*Test DISTINCT
END-IF
DISPLAYINTOFROMjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
OMPUTE = 1 EXECSQLDISPLAYif 4)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
*10+D_AVGLUNCHjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 INTOEND-EXEC MOVE SQLCODEMOVE
ERFORM
0TO-DAY(
( 5 java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 END-IF*Test DISTINCT
*Find total number of days appointed
DISPLAY"SELECT EXTRACT (DAY FROM SUMAPPT)" DISPLAY DISPLAY"SUBQ1"
COMPUTEint1- SQLSELECT INTOjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
SUBQ1 MOVE SQL-COD
CHCKOK DISPLAYint1 java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 if (nt1 MOVE java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 END-IF
*Finally, COUNT
int1 DISPLAY" DISTINCT )INTO:int1 FROM ";java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
*java.lang.StringIndexOutOfBoundsException: Range [43, 11) out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
OVE java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
int1be 2; its valueis", int1 if (int1 NOT 2 java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 MOVE END-EXEC
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 19 SQL" java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 DISPLAY DISTINCT java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0 " ROP
EXECSQL COMMIT "java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
CHCKOK
E WORK "java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 0 EXEC java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 '6,EXEC SQL java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Range [30, 27) out of bounds for length 38 else
* ** java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 EXECSQL java.lang.StringIndexOutOfBoundsException: Range [19, 15) out of bounds for length 49
8java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
OVE COMPUTE errcnt + 1 END-IF
=======java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
EXECSQL COMMIT WORK END-EXEC
SQLCODE SQL-COD ******************** END TEST0617 ******************** **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
*Test SQLCODE and SQLSTATE for normal completion.
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 14 DISPLAY VALUES0617',pass,'PCO END-EXEC DISPLAY"SQLSTATE should be 00000; its value is ", SQLSTATE
PERFORM THRUEXIT-NOSUBCLASS if (SQLCODE NOT = 0 OR MOVE 0 TOflag END-IF if (NORMSQ = "00000"AND NORMSQ NOT = SQLSTATE)
hen DISPLAY"Valid implementation-defined SQLSTATE accepted."
ND-IF
.
NOSUBCLASS
*This routine replaces valid implementation-defined *subclasses with 000. This replacement equates valid *implementation-defined subclasses with the 000 value *expected by the test case; otherwise the test will fail. *After calling NOSUBCLASS, NORMSQ will be tested * SQLSTATE will be printed.
MOVETO NORMSQ
MOVE*java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 *subclass begins in position 3 of char array NORMSQ *valid subclass begins with 5-9, I-Z, end of ALPNUM table PERFORMVARYING norm2 FROM 14 BY 1 UNTIL*implementation-defined subclasses with the 000 value if (NORMSQX *After calling NOSUBCLASS, NORMSQ will be tested MOVE"0"TO NORMSQX(norm1) END-IF END-PERFORM SQLSTATE TOjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 PERFORMTHRU EXIT-NOSUBCLASS *Quit if NORMSQ is unchanged. Subclass is not impl.-def. *Changed NORMSQ means implementation-defined subclass, *so proceed to zero it out, if valid (0-9,A-Z) if (NORMSQ = SQLSTATE) then GO EXIT-NOSUBCLASS
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
MOVE 4 TO java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 11 *examining position 4 of char array NORMSQ *valid characters are 0-9, A-Z PERFORMVARYINGFROM 1 BY 1 UNTILNORMSQ) then ifEND-IF MOVE"O NORMSQX(norm1) END-IF END-PERFORM
MOVE 5 TO norm1 VARYINGFROM . *valid characters are 0-9, A-Z *examining position 5 of char array NORMSQ PERFORMThis routine replaces valid implementation-defined ifNORMSQX(norm1*expected by the case; otherwise testwill MOVE"0"TO* SQLSTATE will be printed. END-IF END-PERFORM
*implementation-defined subclasses are allowed for warnings *(class = 01). These equate to successful completion *SQLSTATE values of 00000. *Reference SQL-92 4.28 SQL-transactions, paragraph 2
if (NORMSQX(1) = "0"AND NORMSQXif NORMSQXnorm1) = *valid subclass begins with 5-9, I-Z, end of ALPNUM table MOVE 0 NORMSQXjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
.
EXIT-NOSUBCLASS. EXIT.
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.