How to Link Basic 7.1 with C 5.1, FORTRAN 5.0, and Pascal 4.0

Last reviewed: May 30, 1996
Article ID: Q66428

SUMMARY

This article explains how to get some library files from the Microsoft Software library, and it describes how to link Microsoft Basic PDS version 7.1 with C version 5.1, FORTRAN version 5.0, or Pascal version 4.0 for MS- DOS. It is designed only for owners of Microsoft Basic Professional Development System (PDS) version 7.1, Microsoft C Compiler version 5.1, Microsoft FORTRAN Compiler version 5.0 or 5.1, and Microsoft Pascal Compiler version 4.0 for MS-DOS.

If you have FORTRAN Compiler version 5.1, please also review the following article in the Microsoft Knowledge Base:

ARTICLE-ID:Q79825

TITLE     :BUG: Initialization Problem with FORTRAN and Basic

To get the library files:

You can find BB0345.EXE (size: 408176 bytes) 
                       , a self-extracting file, on these services:

  • Microsoft's World Wide Web site on the Internet

          On the www.microsoft.com home page, click the Support icon
          Click Knowledge Base, and select the product
    
          Enter kbfile BB0345.EXE (size: 408176 bytes) 
                                 , and click GO!
          Open the article, and click the button to download the file
    
    
  • Internet (anonymous FTP)

          ftp ftp.microsoft.com
          Change to the Softlib/Mslfiles folder
          Get BB0345.EXE (size: 408176 bytes) 
    
  • The Microsoft Network

          On the Edit menu, click Go To, and then click Other Location
          Type "mssupport" (without the quotation marks)
          Double-click the MS Software Library icon
          Find the appropriate product area
          Locate and Download BB0345.EXE
    
  • Microsoft Download Service (MSDL)

          Dial (206) 936-6735 to connect to MSDL
          Download BB0345.EXE (size: 408176 bytes) 
    

    For additional information about downloading, please see the following article in the Microsoft Knowledge Base:

       ARTICLE-ID: Q119591
       TITLE     : How to Obtain Microsoft Support Files from Online Services
    
    
    Run BB0345.EXE in an empty directory to get the following three files: LLIBCER.LIB, LLIBCAR.LIB, and READ.ME. The READ.ME file repeats all information from this article.

    MORE INFORMATION

                       HOW TO LINK Basic PDS 7.1 WITH
                     C 5.1, FORTRAN 5.0, OR PASCAL 4.0
    

    Introduction

    This article describes how to link Basic Professional Development System (PDS) version 7.1 with C 5.1, FORTRAN 5.0, or Pascal 4.0.

    This information applies only to Microsoft Basic PDS version 7.1, Microsoft C Compiler version 5.1, Microsoft FORTRAN Compiler version 5.0, and Microsoft Pascal Compiler version 4.0 for MS-DOS.

    Basic programs compiled with Microsoft Basic PDS 7.1 use the Microsoft C version 6.0 and QuickC 2.50 format for start-up code and memory allocation. This format has changed so dramatically between C 5.1 and C 6.0 that Basic PDS 7.1 is not directly compatible with C 5.1, FORTRAN 5.0, or Pascal 4.0 (which use the C 5.1 format for start-up code and memory allocation).

       NOTE: Microsoft Basic PDS 7.1 is compatible with Microsoft C PDS
       6.0. Basic PDS 7.0 is compatible with C 5.1, but Basic PDS 7.1 is
       not directly compatible with C 5.1 unless you use the method
       described in this application note.
    
    
    To make Basic PDS 7.1 compatible with C 5.1, FORTRAN 5.0, or Pascal 4.0, you must alter the FORTRAN or Pascal language libraries and incorporate modules from the C 6.0 run-time libraries, as explained further below.

    The files you downloaded from the MSL include the following two C 6.0 run- time libraries (which were built by running the C 6.0 SETUP.EXE program and choosing no GRAPHICS.LIB and no PGCHART.LIB included in the combined libraries):

       LLIBCER.LIB and LLIBCAR.LIB
    
    
    These provided files support only the large memory model, the emulation and alternate math packages, and the MS-DOS (or real mode under OS/2) operating system.

    Pascal 4.0

    To make Basic PDS 7.1 compatible with Pascal 4.0, perform the following steps:

    1. Make a copy of the Pascal run-time library that you want to make compatible with Basic PDS 7.1. (You must keep a separate copy of the original unmodified Pascal run-time library so you can continue to link Pascal 4.0 programs when not using mixed-language calls.)

    2. Remove the following modules from the Pascal 4.0 run-time library: CRT0, FMALLOC, AMALLOC, NMALLOC, and PNMSIZE.

      An example of removing these modules from the LIBPASE.LIB library using the LIB.EXE utility is as follows:

            LIB LIBPASE.LIB -CRT0 -FMALLOC -AMALLOC -NMALLOC -PNMSIZE;
      

      Name your new Pascal library Newmixed.LIB (where Newmixed is the filename you assign); it is now a Pascal run-time library that has all of the conflicting code removed.

    3. Remember that this application note provides large memory model support libraries (LLIBCER.LIB and LLIBCAR.LIB) from C 6.0; thus, you must design your Pascal program to follow the conventions of programming in a large memory model.

    4. Please read the "Linking Your Compiled Programs" section further below.

    FORTRAN 5.0

    To make Basic PDS 7.1 compatible with FORTRAN 5.0, perform the following steps:

    1. Make sure you have built the FORTRAN 5.0 library to be run-time compatible with C.

    2. Make a copy of the FORTRAN run-time library you want to modify for Basic PDS 7.1 compatibility. (You must keep a separate copy of the original unmodified FORTRAN run-time library so you can continue to link FORTRAN 5.0 programs when not using mixed-language calls.)

    3. Remove the CHKSTK module from the copy of the FORTRAN run-time library. An example of removing CHKSTK from FORTRAN's LLIBFER.LIB library using the LIB.EXE utility is as follows:

            LIB LLIBFER.LIB -CHKSTK;
      

      Name the new FORTRAN library Newmixed.LIB. Once the CHKSTK module has been removed, you should have a FORTRAN run-time library that has all of the conflicting code removed.

    4. Remember that this application note provides large memory model support libraries from C 6.0; thus, you must design your FORTRAN program to follow the conventions of programming in a large memory model.

    5. Please read the "Linking Your Compiled Programs" section below.

    Linking Your Compiled Programs

    Once you have modified the Pascal or FORTRAN library (Newmixed.LIB as described above) and you have compiled your Pascal or FORTRAN source file(s), you must link your object modules with the proper libraries in the proper order. In the LINK command line, you must specify the Basic library first, the C 6.0 library LLIBCER.LIB or LLIBCAR.LIB (included with this application note) second, and your new Pascal or FORTRAN library (Newmixed.LIB) last. You also must link with the /NOD and /NOE options to ensure that the default libraries the object files normally use are ignored and only the libraries you explicitly list are used. The following is an example

       LINK /NOD/NOE Bas1.OBJ + Mixed.OBJ, Bas1.EXE,,BRT71ENR.LIB +
                     LLIBCER.LIB + Newmixed.LIB;
    
    
    where Bas1.OBJ is your Basic main program, and Mixed.OBJ is your Pascal or FORTRAN object module.

    C 5.1

    To make Basic PDS 7.1 compatible with C 5.1, you must use a method different from the method used above for Pascal or FORTRAN.

    Because the Basic PDS 7.1 and C 5.1 libraries aren't designed to be compatible, there isn't an easy way to make the two libraries work together. In this case, you must use the provided C 6.0 run-time libraries, which provide support for emulator (/FPi) (LLIBCER.LIB) and support for alternate math (/FPa) (LLIBCAR.LIB) support for MS-DOS.

    The following are examples of the required Basic 7.1 and C 5.1 compiling and linking steps

       BC /FPi /O Btest.BAS;
       CL /c /AL /FPi Ctest.C
       LINK /NOD /NOE Btest + Ctest,,,BCL71ENR.LIB LLIBCER.LIB;
    
    
    where the LLIBCER.LIB file above is one of the two C 6.0 libraries (LLIBCER.LIB or LLIBCAR.LIB) provided with this application note. (Don't use the C 5.1 run-time library of the same name.)

    Final Note on Compatibility

    Although the above methods have been designed to produce compatible results, we have not put them through a standard Microsoft mixed- language testing cycle, and it is possible that you may still encounter compatibility problems under certain conditions. We cannot guarantee the complete success of mixed-language programming of Basic 7.1 with C 5.1, FORTRAN 5.0, or Pascal 4.0. Further problems or questions can be directed to Microsoft Language Support Services.


  • Additional reference words: BasicCom 5.10 5.00 4.00 softlib
    KBCategory: kbprg kbfile
    KBSubcategory:


    THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

    Last reviewed: May 30, 1996
    © 1998 Microsoft Corporation. All rights reserved. Terms of Use.