Hello, ABAP Calling

Total Page:16

File Type:pdf, Size:1020Kb

Hello, ABAP Calling Tricktresor Hello, Library Calling – Nutzung dynamischer Bibliotheken mit ABAP® Hello, Library Calling von Stefan Schnell Oftmals besteht der Wunsch oder sogar die Notwendigkeit mit einem ABAP®-Programm von einem SAP®- Applikationsserver auf dem Präsentationsserver mit dem Betriebssystem Microsoft® Windows® Operationen auszuführen. Zu diesem Zweck bieten ABAP® und der SAP® GUI für Windows® einige Möglichkeiten an, die jedoch nicht alle Wege bereitstellen. So ist beispielsweise ein direkter Zugriff auf dynamische Bibliotheken, auch als DLLs bekannt, und eine Kommunikation mit dem GUI, sobald das ABAP®-Programm im Hintergrund ausgeführt wird, nicht vorgesehen. Im Folgenden wird beschrieben wie mit der Programmiersprache FreeBASIC eine DLL erstellt und diese mittels DynamicWrapperX mit einem ABAP®-Programm verwendet werden kann. Weiterhin wird aufgezeigt wie dieses Szenario mit Background Light auch in Hintergrundprozessen verwendet werden kann. Die Wahl der Programmiersprache zur Erstellung OutputDebugString Text End Sub einer DLL ist frei. Prinzipiell spielt es keine Rolle welche Sprache verwendet wird. Hier fiel die Wahl '-Function MsgBox----------------------------------- Function MsgBox Alias "MsgBox" _ exemplarisch auf FreeBASIC, jedoch hätte ebenso (ByVal Text As String, _ ein anderer BASIC-, Pascal- oder C-Dialekt gewählt ByVal Caption As String, _ ByVal Style As Integer) As Integer Export werden können. MsgBox = MessageBox(NULL, Text, Caption, Style) End Function Wir sprechen FreeBASIC '-Function CircleArea------------------------------- Function CircleArea Alias "CircleArea" _ FreeBASIC ist ein frei verfügbarer 32-bit x86- (ByVal Diameter As Single) _ ® Compiler für Windows und Linux. Die ursprüng- As Single Export liche Idee hinter dieser Sprache ist die Fortführung Const Pi As Double = 3.1415926535897932 CircleArea = Pi * (Sqr(Diameter) / 4) ® eines Ansatzes mit hoher Microsoft QuickBASIC- End Function Kompatibilität. Daneben bietet FreeBASIC aber End Extern auch alle Möglichkeiten moderner Programmier- sprachen bis hin zur objektorientierten Program- '-End------------------------------------------------- mierung. DynamicWrapperX COM-Server Programmierung einer DLL DynamicWrapperX ist ein frei verfügbarer COM- ® Eine dynamische Bibliothek mit FreeBASIC zu Server für Windows , der die Möglichkeit bietet erstellen ist keine besondere Schwierigkeit. Die Funktionen von dynamischen Bibliotheken über ® Sub-Routinen und Funktionen müssen lediglich die COM-Schnittstelle aufzurufen. Da ABAP die mit dem Bezeichner Export deklariert und die direkte Verwendung von COM-Bibliotheken Kompilierung mit dem Parameter -dll durchge- unterstützt, können auf diesem Wege DLL- führt werden. Für das folgende Beispiel mit dem Funktionen auf dem Präsentationsserver aufgerufen werden. Name Test.dll wurden drei Routinen mit unter- schiedlichen Schnittstellen und Typen ausgeprägt: Verwendung dynamisch 1. Die Sub-Routine DebugPrint erhält einen Text und übergibt diesen an einen Debugger Der Einsatz der im Vorherigen erstellten DLL ® ohne einen Rückgabewert zu liefern. gestaltet sich mit ABAP und DynamicWrapperX ebenfalls nicht besonders aufwendig. Neben der 2. Die Funktion MsgBox erhält zwei Texte und Erzeugung des Objektes muss jede Funktion erst- eine Ganzzahl, übergibt diese der Windows® einmal registriert werden. Dabei werden mit den API-Funktion MessageBox und liefert als Argumenten 'i=...' die Eingabe- und mit Rückgabewert ebenfalls eine Ganzzahl. 'r=...' die Ausgabeparameter spezifiziert, z.B. 3. Die Funktion CircleArea erhält einen steht s für String, l für Long und f für Float. Nach Durchmesser als Kommazahl, berechnet die der erfolgreichen Registrierung kann nun die DLL- Fläche eines entsprechenden Kreises und Funktion einfach aufgerufen werden. liefert diese ebenfalls als Kommazahl zurück. "-Begin----------------------------------------------- Report zDynWrapX. '-Begin----------------------------------------------- "-Includes---------------------------------------- '-Includes------------------------------------------ Include OLE2INCL. #Include Once "Windows.bi" "-Variables--------------------------------------- Extern "Windows-MS" Data DynWrapX Type OLE2_OBJECT. Data ret Type Integer Value 0. '-Sub DebugPrint------------------------------------ Data Area Type Float Value '0.0'. Sub DebugPrint Alias "DebugPrint" _ Data Diameter Type Float Value '1.0'. (ByVal Text As String) Export Seite 1 von 3 Tricktresor Hello, Library Calling – Nutzung dynamischer Bibliotheken mit ABAP® "-Main-------------------------------------------- "-Variables--------------------------------------- Create Object DynWrapX 'DynamicWrapperX'. Data DynWrapX Type Integer Value 0. If sy-subrc = 0 And DynWrapX-Handle <> 0. Data ret Type Integer Value 0. Data Area Type Float Value '0.0'. "-DebugPrint---------------------------------- Data Diameter Type String Value '1.0'. Call Method Of DynWrapX 'Register' Exporting Data Cmd Type String Value ''. #1 = 'Test.dll' #2 = 'DebugPrint' #3 = 'i=s'. "-Main-------------------------------------------- If sy-subrc = 0. BackgroundLightExists DestExists. Call Method Of DynWrapX 'DebugPrint' If DestExists = 1. Exporting #1 = 'Dies ist ein Test'. CreateObject 'DynamicWrapperX' DynWrapX EndIf. hResult. If sy-subrc = 0 And DynWrapX <> 0 And "-MsgBox-------------------------------------- hResult = S_OK. Call Method Of DynWrapX 'Register' Exporting #1 = 'Test.dll' #2 = 'MsgBox' "-DebugPrint-------------------------------- #3 = 'i=ssl' #4 = 'r=l'. CallMethod DynWrapX If sy-subrc = 0. 'Register(''Test.dll'', ''DebugPrint'', Call Method Of DynWrapX 'MsgBox' = ret ''i=s'')' Exporting #1 = 'Dies ist ein Test' hResult. #2 = 'Test' #3 = 1. If sy-subrc = 0 And hResult = S_OK. Write: / ret. CallMethod DynWrapX EndIf. 'DebugPrint(''Dies ist ein Test'')' hResult. "-CircleArea---------------------------------- EndIf. Call Method Of DynWrapX 'Register' Exporting #1 = 'Test.dll' #2 = 'CircleArea' "-MsgBox------------------------------------ #3 = 'i=f' #4 = 'r=f'. CallMethod DynWrapX If sy-subrc = 0. 'Register(''Test.dll'', ''MsgBox'', Call Method Of DynWrapX 'CircleArea' = ''i=ssl'', ''r=l'')' Area Exporting #1 = Diameter. hResult. Write: / Area. If sy-subrc = 0 And hResult = S_OK. EndIf. GetPropertyInteger DynWrapX 'MsgBox(''Dies ist ein Test'', Free Object DynWrapX. ''Test'', 1 As Long)' EndIf. ret hResult. Write: / ret. "-End------------------------------------------------- EndIf. "-CircleArea-------------------------------- Hintergrundbeleuchtung CallMethod DynWrapX 'Register(''Test.dll'', ''CircleArea'', Im Normalfall ist eine Kommunikation zwischen ''i=f'', ''r=f'')' dem Präsentationsserver und einem im Hinter- hResult. ® If sy-subrc = 0 And hResult = S_OK. grund laufenden ABAP -Programm nicht möglich. Concatenate 'CircleArea(' Diameter ')' Background Light ist eine ABAP®-COM-Brücke die Into Cmd. ® GetPropertyFloat DynWrapX Cmd Area es erlaubt COM-Bibliotheken auch in ABAP - hResult. Hintergrundprozessen zu verwenden und somit Write: / Area. trotzdem eine Kommunikation zu erlauben. Bei EndIf. ® Background Light handelt es sich um ein SAP FreeObject DynWrapX. Server-Programm auf Basis des SAP® NetWeaver® EndIf. EndIf. RFC SDK mit dem jeder COM-Server angesprochen werden kann. Darüber hinaus werden noch weitere "-End------------------------------------------------- ® Möglichkeiten angeboten z.B. um das Windows Zusätzliche Hinweise Management Instrumentaion (WMI) zu nutzen. • Der Zusatz .dll beim Methodenaufruf Register ist optional. Blick in den Rückspiegel • Das Verzeichnis system32 ist am besten Die Umsetzung eines ABAP®-Programmes mit geeignet als Speicherort der DLL. Aufgrund Background Light und DynamicWrapperX sieht eingeschränkter Rechte kann dies jedoch zu ähnlich dem vorherigen Ansatz aus. Neben der Problemen führen. zusätzlichen Initialisierung und dem zusätzlichen Rückgabewert hResult sticht die Befehlsübergabe als Zeichenkette ins Auge. Während bei ABAP® Fazit diese mit den #-Parametern spezifiziert werden, Wie gezeigt ist die Verwendung von lokalen findet hier die Übergabe als eine Zeichenkette statt. Bibliotheken auf dem Präsentationsserver mit Dieser Ansatz an sich ist zwar etwas gewöhnungs- ABAP®-Programmen vom Applikationsserver kein bedürftig, bietet aber den Vorteil der besseren Hexenwerk oder Magie. DynamicWrapperX bietet Lesbarkeit. hier einen einfachen Ansatz dies zu realisieren. "-Begin----------------------------------------------- Damit können auch die Funktionen des WinAPI Report zBLight. genutzt werden. Ebenso kann der Aufruf von DLL- Funktionen aus ABAP®-Hintergrundprozessen mit "-Includes---------------------------------------- Include ZBLIGHTINCL. Background Light und DynamicWrapperX simpel Seite 2 von 3 Tricktresor Hello, Library Calling – Nutzung dynamischer Bibliotheken mit ABAP® durchgeführt werden, so dass nicht einmal ein Anhang B Dialogprozess zur Verfügung gestellt werden muss. Auch die Verwendung von Zeigern, die bei DLL- Abschließend noch ein Beispiel mit dem der ® Funktionen öfter üblich sind, können mit einer Zugriff auf das Windows API demonstriert wird. weiteren COM-Bibliothek ermöglicht werden. Es wird die Funktion MessageBox der Bibliothek user32 verwendet, ausgeführt und der Haben Sie Fragen, Anregungen oder Anmerkungen, Rückgabewert abgefragt. so senden Sie einfach eine E-Mail an "-Begin----------------------------------------------- [email protected]. Report zDynWrapX. "-Includes---------------------------------------- Include OLE2INCL. Warenzeichen "-Constants---------------------------------------
Recommended publications
  • A Beginner's Guide to Freebasic
    A Beginner’s Guide to FreeBasic Richard D. Clark Ebben Feagan A Clark Productions / HMCsoft Book Copyright (c) Ebben Feagan and Richard Clark. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". The source code was compiled under version .17b of the FreeBasic compiler and tested under Windows 2000 Professional and Ubuntu Linux 6.06. Later compiler versions may require changes to the source code to compile successfully and results may differ under different operating systems. All source code is released under version 2 of the Gnu Public License (http://www.gnu.org/copyleft/gpl.html). The source code is provided AS IS, WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Microsoft Windows®, Visual Basic® and QuickBasic® are registered trademarks and are copyright © Microsoft Corporation. Ubuntu is a registered trademark of Canonical Limited. 2 To all the members of the FreeBasic community, especially the developers. 3 Acknowledgments Writing a book is difficult business, especially a book on programming. It is impossible to know how to do everything in a particular language, and everyone learns something from the programming community. I have learned a multitude of things from the FreeBasic community and I want to send my thanks to all of those who have taken the time to post answers and examples to questions.
    [Show full text]
  • Powerbasic Console Compiler 603
    1 / 2 PowerBasic Console Compiler 603 Older DOS tools may still be fixed and/or enhanced, but newer command line tools, if any, will ... BAS source code recompilation requires PowerBASIC 3.1 DOS compiler, while .MOD source ... COM 27 603 29.09.03 23:15 ; 9.6s -- no bug LIST.. PowerBASIC Console Compiler for Windows. Create Windows applications with a text mode user interface. Published by PowerBASIC. Distributed by .... Код: Выделить всё: #compile exe ... http://rl-team.net/1146574146-powerbasic-for-windows-v-1003-powerbasic-console-compiler-v-603.html.. This collection includes 603 Hello World programs in as many more-or-less well ... Hello World in Powerbasic Console Compiler FUNCTION PBMAIN () AS .... 16 QuickBASIC/PowerBASIC Console I/O .. ... Register Port A Port B Port C Port D Port E Port F IOConf Address 0x600 0x601 0x602 0x603 0x604 0x605 0x606 ... Similar functions (and header files) are available for other C compilers and .... 48. asm11_77.zip, A DOS based command-line MC68HC11 cross-assembler ... 139. compas3e.zip, COMPAS v3.0 - Compiler from Pascal for educational ... 264. fce4pb24.zip, FTP Client Engine v2.4 for Power Basic, 219742, 2004-06-10 10:11:19 ... 603. reloc100.zip, Relocation Handler v1.00 by Piotr Warezak, 10734 .... PowerBASIC Console Compiler v6.0. 2 / 3415. Table of contents ... Error 603 - Incompatible with a Dual/IDispatch interface ............................ 214. Error 605 .... PowerBasic Console Compiler 6.03link: https://cinurl.com/1gotz8. 603-260-8480 Software provider to use compile and work where and when? ... Get wired for power. Basic large family enjoy fun nights like that. ... Report diagnosis code as an application from console without writing any custom duty or ...
    [Show full text]
  • Screenshot Showcase 1
    Volume 125 June, 2017 VirtualBox: Going Retro On PCLinuxOS Inkscape Tutorial: Creating Tiled Clones, Part Three An Un-feh-gettable Image Viewer Game Zone: Sunless Sea PCLinuxOS Family Member Spotlight: arjaybe GOG's Gems: Star Trek 25th Anniversary Tip Top Tips: HDMI Sound On Encrypt VirtualBox Virtual Machines PCLinuxOS Recipe Corner PCLinuxOS Magazine And more inside ... Page 1 In This Issue... 3 From The Chief Editor's Desk... Disclaimer 4 Screenshot Showcase 1. All the contents of The PCLinuxOS Magazine are only for general information and/or use. Such contents do not constitute advice 5 An Un-feh-gettable Image Viewer and should not be relied upon in making (or refraining from making) any decision. Any specific advice or replies to queries in any part of the magazine is/are the person opinion of such 8 Screenshot Showcase experts/consultants/persons and are not subscribed to by The PCLinuxOS Magazine. 9 Inkscape Tutorial: Create Tiled Clones, Part Three 2. The information in The PCLinuxOS Magazine is provided on an "AS IS" basis, and all warranties, expressed or implied of any kind, regarding any matter pertaining to any information, advice 11 ms_meme's Nook: Root By Our Side or replies are disclaimed and excluded. 3. The PCLinuxOS Magazine and its associates shall not be liable, 12 PCLinuxOS Recipe Corner: Skillet Chicken With Orzo & Olives at any time, for damages (including, but not limited to, without limitation, damages of any kind) arising in contract, rot or otherwise, from the use of or inability to use the magazine, or any 13 VirtualBox: Going Retro On PCLinuxOS of its contents, or from any action taken (or refrained from being taken) as a result of using the magazine or any such contents or for any failure of performance, error, omission, interruption, 30 Screenshot Showcase deletion, defect, delay in operation or transmission, computer virus, communications line failure, theft or destruction or unauthorized access to, alteration of, or use of information 31 Tip Top Tips: HDMI Sound On contained on the magazine.
    [Show full text]
  • PDQ Manual.Pdf
    CRESCENT SOFTWARE, INC. P.D.Q. A New Concept in High-Level Programming Languages Version 3.13 Entire contents Copyright © 1888-1983 by Ethan Winer and Crescent Software. P.D.Q. was conceived and written by Ethan Winer, with substantial contributions [that is, the really hard parts) by Robert L. Hummel. The example programs were written by Ethan Winer, Don Malin, and Nash Bly, with additional contributions by Crescent and Full Moon customers. The floating point math package was written by Paul Passarelli. This manual was written by Ethan Winer. The section that describes how to use P.O.Q. with assembly language was written by Hardin Brothers. Full Moon Software 34 Cedar Vale Drive New Milford, CT 06776 Sales: 860-350-6120 Support: 860-350-8188 (voice); 860-350-6130 [fax) Sixth printing. LICENSE AGREEMENT Crescent Software grants a license to use the enclosed software and printed documentation to the original purchaser. Copies may be made for back-up purposes only. Copies made for any other purpose are expressly prohibited, and adherence to this requirement is the sole responsibility of the purchaser. However, the purchaser does retain the right to sell or distribute programs that contain P.D.Q. routines, so long as the primary purpose of the included routines is to augment the software being sold or distributed. Source code and libraries for any component of the P.D.Q. program may not be distributed under any circumstances. This license may be transferred to a third party only if all existing copies of the software and documentation are also transferred.
    [Show full text]
  • Programmierung Unter GNU/Linux Für Einsteiger
    Programmierung unter GNU/Linux fur¨ Einsteiger Edgar 'Fast Edi' Hoffmann Community FreieSoftwareOG [email protected] 7. September 2016 Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. Programmierung Begriffserkl¨arung 2 / 35 Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. Programmierung Begriffserkl¨arung Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. 2 / 35 Programmierung Begriffserkl¨arung Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. 2 / 35 Programme werden unter Verwendung von Programmiersprachen formuliert ( kodiert\). " In eine solche Sprache ubersetzt\¨ der Programmierer die (z. B. im Pflichtenheft) " vorgegebenen Anforderungen und Algorithmen. Zunehmend wird er dabei durch Codegeneratoren unterstutzt,¨ die zumindest
    [Show full text]
  • 2D-Spieleprogrammierung in Freebasic
    Dieser Abschnitt behandelt QuickBASIC und dessen abgespeckte Version QBASIC gleichermaßen; der Einfachheit halber wird nur von QuickBASIC gesprochen. Wer noch nie mit QuickBASIC in Berührung gekommen ist, kann den Abschnitt getrost überspringen – er ist eher für Programmierer interessant, die von QuickBASIC zu FreeBASIC wechseln wollen. Trotz hoher Kompatibilität zu QuickBASIC gibt es eine Reihe von Unterschieden zwischen beiden BASIC-Dialekten. Einige davon beruhen auf der einfachen Tatsache, dass QuickBASIC für MS-DOS entwickelt wurde und einige Elemente wie beispielsweise direkte Hardware-Zugriffe unter echten Multitaskingsystemen wie höhere Windows- Systeme oder Linux nicht oder nur eingeschränkt laufen. Des Weiteren legt FreeBASIC größeren Wert auf eine ordnungsgemäße Variablendeklaration, womit Programmierfehler leichter vermieden werden können. Hinweis: Mit der Compiler-Option -lang qb kann eine größere Kompatibilität zu QuickBASIC erzeugt werden. Verwenden Sie diese Option, um alte Programme zum Laufen zu bringen. Mehr dazu erfahren Sie im Kapitel ??, S. ??. • Nicht explizit deklarierte Variablen (DEF###) In FreeBASIC müssen alle Variablen und Arrays explizit (z. B. durch DIM) deklariert werden. Die Verwendung von DEFINT usw. ist nicht mehr zulässig. • OPTION BASE Die Einstellung der unteren Array-Grenze mittels OPTION BASE ist nicht mehr zulässig. Sofern die untere Grenze eines Arrays nicht explizit angegeben wird, verwendet FreeBASIC den Wert 0. • Datentyp INTEGER QuickBASIC verwendet 16 Bit für die Speicherung eines Integers. In FreeBASIC sind es, je nach Compilerversion, 32 bzw. 64 Bit. Verwenden Sie den Datentyp SHORT, wenn Sie eine 16-bit-Variable verwenden wollen. • Funktionsaufruf Alle Funktionen und Prozeduren, die aufgerufen werden, bevor sie definiert wurden, müssen mit DECLARE deklariert werden. Der Befehl CALL wird in FreeBASIC nicht mehr unterstützt.
    [Show full text]
  • Freebasic-Einsteigerhandbuch
    FreeBASIC-Einsteigerhandbuch Grundlagen der Programmierung in FreeBASIC von S. Markthaler Stand: 11. Mai 2015 Einleitung 1. Über das Buch Dieses Buch ist für Programmieranfänger gedacht, die sich mit der Sprache FreeBASIC beschäftigen wollen. Es setzt keine Vorkenntnisse über die Computerprogrammierung voraus. Sie sollten jedoch wissen, wie man einen Computer bedient, Programme installiert und startet, Dateien speichert usw. Wenn Sie bereits mit Q(uick)BASIC gearbeitet haben, finden Sie in Kapitel 1.3 eine Zusammenstellung der Unterschiede zwischen beiden Sprachen. Sie erfahren dort auch, wie Sie Q(uick)BASIC-Programme für FreeBASIC lauffähig machen können. Wenn Sie noch über keine Programmiererfahrung verfügen, empfiehlt es sich, die Kapitel des Buches in der vorgegebenen Reihenfolge durchzuarbeiten. Wenn Ihnen einige Konzepte bereits bekannt sind, können Sie auch direkt zu den Kapiteln springen, die Sie interessieren. 2. In diesem Buch verwendete Konventionen In diesem Buch tauchen verschiedene Elemente wie Variablen, Schlüsselwörter und besondere Textabschnitte auf. Damit Sie sich beim Lesen schnell zurechtfinden, werden diese Elemente kurz vorgestellt. Befehle und Variablen, die im laufenden Text auftauchen, werden in nichtproportionaler Schrift dargestellt. Schlüsselwörter wie PRINT werden in Fettdruck geschrieben, während für andere Elemente wie variablenname die normale Schriftstärke eingesetzt wird. Quelltexte werden vollständig in nichtproportionaler Schrift gesetzt und mit einem Begrenzungsrahmen dargestellt. Auch hier werden Schlüsselwörter fett gedruckt. Der Dateiname des Programms wird oberhalb des Quelltextes angezeigt. Quelltext 1.1: Hallo Welt ’ Kommentar: Ein gewoehnliches Hallo-Welt-Programm CLS PRINT "Hallo FreeBASIC-Welt!" SLEEP 5 END ii Einleitung Es empfiehlt sich, die Programme abzutippen und zu testen. Die meisten Programme sind sehr kurz und können schnell abgetippt werden – auf der anderen Seite werden Sie Codebeispiele, die Sie selbst getippt haben, leichter behalten.
    [Show full text]
  • ~ ARTISAN® with Experienced Engineers and Technicians on Staff
    Full-service, independent repair center -~ ARTISAN® with experienced engineers and technicians on staff. TECHNOLOGY GROUP ~I We buy your excess, underutilized, and idle equipment along with credit for buybacks and trade-ins. Custom engineering Your definitive source so your equipment works exactly as you specify. for quality pre-owned • Critical and expedited services • Leasing / Rentals/ Demos equipment. • In stock/ Ready-to-ship • !TAR-certified secure asset solutions Expert team I Trust guarantee I 100% satisfaction Artisan Technology Group (217) 352-9330 | [email protected] | artisantg.com All trademarks, brand names, and brands appearing herein are the property o f their respective owners. Find the Measurement Computing / CEC PC-488 at our website: Click HERE Program and documentation copyrighted 1986, 1998, 2003 by Capital Equipment Corporation (CEC). The software interpreter contained in EPROM/ROM is copyrighted and all rights are reserved by Capital Equipment Corporation. Copying or duplicating this product is a violation of law. Application software libraries provided on disk are copyrighted by Capital Equipment Corporation. The purchaser is granted the right to include portions of this software in products which use one of CEC's IEEE-488 interface boards (including those sold through resellers such as Keithley Instruments, etc.). The software may not be distributed other than for the application just mentioned. Purchasers of this product may copy and use the programming examples contained in this book. No other parts of this book may be reproduced or transmitted in any form or by any means, electronic, optical, or mechanical, including photocopying and recording, or by any information storage and retrieval system, without permission in writing from Capital Equipment Corporation.
    [Show full text]
  • An ECMA-55 Minimal BASIC Compiler for X86-64 Linux®
    Computers 2014, 3, 69-116; doi:10.3390/computers3030069 OPEN ACCESS computers ISSN 2073-431X www.mdpi.com/journal/computers Article An ECMA-55 Minimal BASIC Compiler for x86-64 Linux® John Gatewood Ham Burapha University, Faculty of Informatics, 169 Bangsaen Road, Tambon Saensuk, Amphur Muang, Changwat Chonburi 20131, Thailand; E-mail: [email protected] Received: 24 July 2014; in revised form: 17 September 2014 / Accepted: 1 October 2014 / Published: 1 October 2014 Abstract: This paper describes a new non-optimizing compiler for the ECMA-55 Minimal BASIC language that generates x86-64 assembler code for use on the x86-64 Linux® [1] 3.x platform. The compiler was implemented in C99 and the generated assembly language is in the AT&T style and is for the GNU assembler. The generated code is stand-alone and does not require any shared libraries to run, since it makes system calls to the Linux® kernel directly. The floating point math uses the Single Instruction Multiple Data (SIMD) instructions and the compiler fully implements all of the floating point exception handling required by the ECMA-55 standard. This compiler is designed to be small, simple, and easy to understand for people who want to study a compiler that actually implements full error checking on floating point on x86-64 CPUs even if those people have little programming experience. The generated assembly code is also designed to be simple to read. Keywords: BASIC; compiler; AMD64; INTEL64; EM64T; x86-64; assembly 1. Introduction The Beginner’s All-purpose Symbolic Instruction Code (BASIC) language was invented by John G.
    [Show full text]
  • Xfont Documentation
    XFont Lib for FreeBASIC Introduction XFont is Object Oriented Programming (OOP) library designed for drawing smooth font text. This lib support 1, 2, 4, 8, 15/16, 24/32 bpp depth. Some of the most exciting features: - Support alpha blending. This works in 15/16 and 24/32 bpp depths. - Alpha mask for drawing smooth font text. - 8 fonts slot can be loaded with x-font file format. - Included with internal standard font. - Easy to use. - No initialize needed between switching screen mode. - No ScreenLock/ScreenUnlock switch needed (For FB 0.20.0b or above only). - Unicode support (ISO 10646). About XFont Lib was developed by Victor Phoa. Copyright 2008-2010 © Xaviorsoft Studios. All Rights Reserved. Note All example code written is designed for FB 0.20.0 or above. FB 0.18.x user should add ScreenLock/ScreenUnlock switch manually to make example code working correctly. Keywords List (Arrange by mostly used order) DrawString Syntax Declare Sub DrawString Overload (ByVal Target As Any Ptr=0, ByRef Text As wString Ptr, ByVal X As Short, _ ByVal Y As Short, ByVal ScaleX As Single=1, ByVal ScaleY As Single=1, _ ByVal Direction As uByte=0) Declare Sub DrawString Overload (ByVal Target As Any Ptr=0, ByRef Text As String, ByVal X As Short, _ ByVal Y As Short, ByVal ScaleX As Single=1, ByVal ScaleY As Single=1, _ ByVal Direction As uByte=0) Declare Sub DrawString Overload (ByVal Target As Any Ptr=0, ByRef Text As uInteger Ptr, ByVal X As Short, _ ByVal Y As Short, ByVal ScaleX As Single=1, ByVal ScaleY As Single=1, _ ByVal Direction As uByte=0) Usage Drawstring [target], text, x, y, [scalex], [scaley], [direction] Description Displays text at x, y in graphics modes.
    [Show full text]
  • Ada User Journal
    ADA Volume 27 USER Number 4 December 2006 JOURNAL Contents Page Editorial Policy for Ada User Journal 194 Editorial 195 News 197 Conference Calendar 232 Forthcoming Events 239 Articles J-C Mahieux, B Maudry, A Foster “Using CORBA to Bring New Life to Legacy Ada Software: an Experience Report” 244 J Klein, D Sotirovski “The Publisher Framework” 248 Ada-Europe 2006 Sponsors 256 Ada-Europe Associate Members (National Ada Organizations) Inside Back Cover Ada User Journal Volume 27, Number 4, December 2006 194 Editorial Policy for Ada User Journal Publication Original Papers Commentaries Ada User Journal – The Journal for the Manuscripts should be submitted in We publish commentaries on Ada and international Ada Community – is accordance with the submission software engineering topics. These published by Ada-Europe. It appears guidelines (below). may represent the views either of four times a year, on the last days of individuals or of organisations. Such March, June, September and All original technical contributions are articles can be of any length – December. Copy date is the first of the submitted to refereeing by at least two inclusion is at the discretion of the month of publication. people. Names of referees will be kept Editor. confidential, but their comments will Opinions expressed within the Ada Aims be relayed to the authors at the discretion of the Editor. User Journal do not necessarily Ada User Journal aims to inform represent the views of the Editor, Ada- readers of developments in the Ada The first named author will receive a Europe or its directors. programming language and its use, complimentary copy of the issue of the general Ada-related software Journal in which their paper appears.
    [Show full text]
  • Comparison of Programming Languages - Wikipedia, the Free
    Comparison of programming languages - Wikipedia, the free ... https://en.wikipedia.org/wiki/Comparison_of_programming_... Object- Event- Other Language Intended use Imperative Functional Procedural Generic Reflective Standardized? Oriented Driven Paradigm(s) Application, ActionScript 3.0 Yes Yes Yes 1996, ECMA client-side, Web concurrent,[4] [5] Application, distributed, 1983, 2005, 2012, ANSI, Ada embedded, Yes Yes Yes[2] Yes[3] imperative ISO, GOST 27831-88[7] realtime, system object- oriented[6] Highly domain- specific, Aldor Yes Yes Yes No symbolic computing ALGOL 58 Application Yes No ALGOL 60 Application Yes 1960, IFIP WG 2.1, ISO[8] 1968, IFIP WG 2.1, GOST ALGOL 68 Application Yes concurrent 27974-88,[9] Parallel Ateji PX Yes pi calculus No application Application, array-oriented, APL 1989, ISO data processing tacit any, syntax is usually highly Assembly General Yes specific, related No language to the target processor GUI automation AutoHotkey (macros), highly Yes No domain-specific GUI automation AutoIt (macros), highly Yes Yes Yes No domain-specific 1983, ANSI Application, (http://portal.acm.org BASIC Yes Yes education /citation.cfm?id=988221), ISO Application, BBj Yes Yes No business, Web Application, BeanShell Yes Yes Yes Yes [10] scripting In progress, JCP BitC System Yes Yes No BLISS System Yes No Application, BlitzMax Yes Yes Yes No game Boo Application No domain-specific, Bro Yes Yes No application Application, [11] system, 1989, ANSI C89, ISO C90, C general purpose, Yes Yes ISO C99, ISO C11[12] low-level operations 1998, ISO/IEC
    [Show full text]