# Anyone know Quickbasic?

**URL:** <https://boards.straightdope.com/t/anyone-know-quickbasic/26336>\
**Category:** Factual Questions\
**Created:** [July 21, 2000, 10:50am UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336 "2000-07-21T10:50:23Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jimpy](https://avatars.discourse-cdn.com/v4/letter/j/c68b51/32.png) [@Jimpy](https://boards.straightdope.com/u/Jimpy)\
**Post date:** [July 21, 2000, 10:50am UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336/1 "2000-07-21T10:50:23Z")

</div>

I’m working on a program and I’m stumped. The whole thing was working fine until I got to the part where I had to put a complex bit of data into a file. I created a little test routine to try and do it and I keep getting a “Type Mismatch” error and I don’t see why. I defined it as a 3 length string and it IS one. Unless, of course, I’m doing something wrong. But I don’t see it and after 2+ hours of scanning books (three books for a combined 2500+ pages) and surfing the net, I am, as I said, stumped.

Can anyone tell me why I keep getting a type mismatch is the marked line (sorry for the length, but I’m including the wohole thing in case the mistake is from somewhere else in the program).

```auto

OPTION BASE 1
TYPE test
 **nm AS STRING * 3 REM <<<test.nm defined here**
 aexc AS LONG
 a2 AS LONG
 a3 AS LONG
 a4 AS LONG
 a5 AS LONG
 a6 AS LONG
 a7 AS LONG
 a8 AS LONG
 a9 AS LONG
 a10 AS LONG
 a11 AS LONG
 a12 AS LONG
 a13 AS LONG
 a14 AS LONG
 a15 AS LONG
 a16 AS LONG
 a17 AS LONG
 a18 AS LONG
 a19 AS LONG
 a20 AS LONG
 a21 AS LONG
 a22 AS LONG
 a23 AS LONG
 a24 AS LONG
 a25 AS LONG
 a26 AS LONG
 a27 AS LONG
 a28 AS LONG
 a29 AS LONG
 a30 AS LONG
 a31 AS LONG
 a32 AS LONG
 a33 AS LONG
 a34 AS LONG
 a35 AS LONG
 a36 AS LONG
 a37 AS LONG
 a38 AS LONG
END TYPE
INPUT ; "filename"; q$
q$ = q$ + ".dxt"
OPEN q$ FOR RANDOM AS #1 LEN = 155
DIM b(38) AS LONG
FOR x = 1 TO 38
 b(x) = 30
NEXT x
**z$ = "~~~" REM <<<test.nm initialized here
test.nm = z$ REM <<<Type Mismatch here **
test.exc = b(1)
test.a2 = b(2)
test.a3 = b(3)
test.a4 = b(4)
test.a5 = b(5)
test.a6 = b(6)
test.a7 = b(7)
test.a8 = b(8)
test.a9 = b(9)
test.a10 = b(10)
test.a11 = b(11)
test.a12 = b(12)
test.a13 = b(13)
test.a14 = b(14)
test.a15 = b(15)
test.a16 = b(16)
test.a17 = b(17)
test.a18 = b(18)
test.a19 = b(19)
test.a20 = b(20)
test.a21 = b(21)
test.a22 = b(22)
test.a23 = b(23)
test.a24 = b(24)
test.a25 = b(25)
test.a26 = b(26)
test.a27 = b(27)
test.a28 = b(28)
test.a29 = b(29)
test.a30 = b(30)
test.a31 = b(31)
test.a32 = b(32)
test.a33 = b(33)
test.a34 = b(34)
test.a35 = b(35)
test.a36 = b(36)
test.a37 = b(37)
test.a38 = b(38)
PUT #1, 1, test
CLOSE

```

---

<div class="post-metadata">

**Author:** ![aramis](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@aramis](https://boards.straightdope.com/u/aramis)\
**Post date:** [July 21, 2000, 12:24pm UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336/2 "2000-07-21T12:24:33Z")

</div>

My QB is a little rusty, but I think you need to put a colon before the REM to tell the interpreter that it isn’t part of the prior statement. i.e.

```
nm AS STRING * 3 : REM &lt;&lt;&lt;test.nm defined here
```

---

<div class="post-metadata">

**Author:** ![Lord\_Jim](https://avatars.discourse-cdn.com/v4/letter/l/ecccb3/32.png) [@Lord\_Jim](https://boards.straightdope.com/u/Lord_Jim)\
**Post date:** [July 21, 2000, 1:54pm UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336/3 "2000-07-21T13:54:43Z")

</div>

You don’t use the name in your type construct (test) as a data area. Add a line “dim record as test” then fill the fields “record.nm”, “record.exc”, etc.

```auto

   Dim Record as Test
   Z$ = "~~~"
   Record.nm = Z$
   Record.exc = b(1)
   .
   .

```

See if that doesn’t fix the problem.

Jim

---

<div class="post-metadata">

**Author:** ![Modian](https://avatars.discourse-cdn.com/v4/letter/m/8e8cbc/32.png) [@Modian](https://boards.straightdope.com/u/Modian)\
**Post date:** [July 21, 2000, 3:32pm UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336/4 "2000-07-21T15:32:46Z")

</div>

The type mismatch has nothing to do with the string, it’s cause you didn’t declare a variable of type test.

So after your test decleration, you need to define a variable.

Dim foo as test

Also, instead of filling in that array, and then filling in that type, why don’t you write the data to the file as loop through? That’d get rid of the messy Test type and make a lot more sense. Unless it’s a requirement for the class.

---

<div class="post-metadata">

**Author:** ![Jimpy](https://avatars.discourse-cdn.com/v4/letter/j/c68b51/32.png) [@Jimpy](https://boards.straightdope.com/u/Jimpy)\
**Post date:** [July 21, 2000, 4:05pm UTC](https://boards.straightdope.com/t/anyone-know-quickbasic/26336/5 "2000-07-21T16:05:25Z")

</div>

Thanks, I kind of figured that out (it’s amazing what a little sleep will do) but my real problem was doing something **exactly** like an example in the book that comes with QuickBasic did it, I copied Microsoft’s mistake, although I seemed to have picked and marked the one example in the book where they did it wrong, because looking at other examples in the book, they got it right.

I really should have known better and stuck to the QuickBasic Bible from the Waite group. I think the books that come (or at least used to come in the old days) with Microsoft products are solely designed to force you to buy more books. Even so, the QuickBasic Bible and the Basic Handbook both gave examples where they defined a variable type as one word (for example “planets”) then later in the program, amongst a bunch of REMs and other statements, definded the variable (as, in this case, “DIM planet AS planets”) which, in my sleep deprived state, I would have stood a much better chance of noticing.

Why does every programming book insist on giving a complete program (in this case one to put the statistics of planets into a data file and retrieve them) that you will never use insted of giving a clear concise example of how to use the function?
