In an IBM i/AS400 there are display files (DSPF) which is used to design / create screens.
DSPF (display file) in AS/400 is a file with definitions to format a screen to show and to receive data.
Are there similar files in zOS?
Screens on z/OS are specific to a subsystem.
In ISPF you would use Dialog Tag Language and/or panel definition statements to create a screen (ISPF calls it a panel).
In CICS you would use Assembler macros to create a BMS map (the screen).
In IMS you would use Message Format Services to create a screen.
As indicated in #SteveIves answer, there exist products to "paint" a screen.
All of the above are used to create 3270 screens; these days of course almost all 3270 devices are emulated. This is not the only way to create a user interface for a z/OS application. CICS, for example, understands http and it is relatively common to have a web interface to a CICS application.
There are no such files by default in z/OS. There are software products that have screen definitions - ISPF and Telon being 2. ISPF (Interactive System Productivity Feature) is the ‘default’ UI under TSO and you can create your own screens, but these are not dsp files.
Telon is (I think) some sort of screen layout/definition utility used to create applications running under IBM’s CICS. These are also not dsp files.
I won't duplicate #cshneid or #steve_ives answers but will provide some context. IIRC Display Files are more than screen mapping and include definitions for processing the data to be presented so they are more akin to a fuller programming paradigm than just mapping.
I'm not aware of a feature that incorporates both mapping of data and processing of files. This is accomplished based on the runtimes (CICS, IMS, etc.) for 3270 streams. Generally this is a combination of the mapping tools mentioned along with a programming language like COBOL, C, or other that are compatible with the runtime.
The closest I think you come is Dialog Manager in the TSO runtime which does have some data management capability but tends to be used for system level work and not user applications which are generally relegated to CICS, IMS, WAS, ...
Related
The More General Question
I am wondering if there is a standard way that operating systems / desktop managers use to expose the user's preference regarding the placement of the window frame controls (Close, Maximize/Miniaturize, Minimize).
For platforms like Windows and MacOS, it's "pretty" safe to assume that the users wants their window controls on the right and left respectively to match the rest of the windows in the GUI. But the key word here is "assume'. I hate to assume things when I code.
Furthermore, what about all the different Linux distributions and flavors?
I think this information could be useful to application developers in the same way that it's useful to know the user's preferences regarding dark or light themes.
My More Specific Question
Now, what I'm building currently is an Electron application that could really benefit from a custom title bar (a.k.a. a frameless window). And I do understand that my problem is caused by the fact that I want to bypass the window frame abstraction that is normally offered by the operating systems, but I'd really like to be able to position my custom controls in my title bar without having to guess.
But anyway, since I use Electron, I do have access to native features using NodeJS, but I'd also be curious to know if browsers have or are planning to implement a way for the CSS or JavaScript running in the browser to determine the intended placement of the window controls, again, similarly to prefers-color-scheme?
I'm aware of the existence of DDS files which allow programming of display graphics on the as/400, but is there another way?
Specifically, what I want to do is manipulate the terminal buffer directly to be able to display anything else than just text.
For example, the terminal looks like that:
Let's say, in memory, there would be a two dimensional char array: text[20][80] for the text menu and lower than that, there would be a pixel buffer array of size [200][800].
Is there a way to access either of those arrays directly?
I would like to be able to create a displayable menu entirely in C without the need of a display file and also display other kind of graphics (images) directly in the pixel buffer.
Is there a way to access either of those arrays directly?
That's easy enough, though a "display file" that has no formatted fields will still be needed. The 'file' will be the connection between the program and the physical device (or the emulator). You can define a single large area that contains whatever "text" you want your program to put into it. This can even include display field attributes that delimit input areas.
For the most control, the DDS USRDFN keyword is appropriate. But for simple stuff like lists of menu items, almost any large text field can be output to.
Outputting simple text is easy. For detailed stuff like USRDFN formatting, detailed understanding of the 5250 protocol is needed.
One kind of alternative would be to use User Interface Manager (UIM) APIs to update a PANEL's "text area" (:TEXT) via its USREXIT= application program. The UIM handles everything as far as any "display file" definition and actual I/O goes. The UIM can be thought of as a HTML interface for 5250 and uses a very similar markup language to define PANELs.
Another alternative is the Dynamic Screen Manager (DSM) APIs. These give much finer control than the UIM or DDS methods (though DDS USRDFN gets very close). But as with USRDFN, actual device control will require 5250 protocol knowledge.
...and also display other kind of graphics (images) directly in the
pixel buffer.
There is no "pixel buffer" for 5250 nor even 'pixels'. It's a character-based protocol, like telnet. If you're going for images or 'pixels', you're into browser interfaces, or perhaps Java and NAWT, or X-windows, etc.
Now, granted that with TCP/IP and sockets, you can do essentially anything that you're able to program. Whatever you can figure out how to do, including downloading/installing 3rd-party code libraries, you can do -- within the network restrictions surrounding your server. But it is in fact a server, so GUI kinds of apps generally shouldn't run on it. That's the same as for almost all types of servers. Code the GUI on the client system rather than the server. But you can do it if you really want to.
I'm not sure why you'd want to do this...
Now-a-days, it'd be much easier to simply generate your output as HTML and serve it up via the integrated apache web server.
But if you really want to do graphics via 5250, it can be done...theoretically at least. In 20+ years on the platform, I've never seen it.
But way back when (1994?), IBM added support for Graphical Data Display Manager (GDDM) and Presentation Graphics APIs into OS/400. "GDDM is a means of
displaying, printing, or plotting pictures. Presentation Graphics routines are a
means of displaying, printing, or plotting business charts."
The support is still in the OS. However, client side support is NOT available in IBM i Access for Windows or the most recently released client, IBM Access Client Solutions (ACS). It appears that the standalone IBM Personal Communications product may support GDDM.
For complete control of the character buffer, take a look at the Dynamic Screen Manager (DSM) APIs. The DSM APIs are "a set of screen I/O interfaces that provide a dynamic way to create and manage screens for the Integrated Language Environment® (ILE) high-level languages. Because the DSM interfaces are bindable, they are accessible to ILE programs only."
There is a way to do it in ILE C/C++. This was very fun to investigate since I haven't tried it myself.
The only documentation on it (page 183+) I could find is from 5.1, but you are able to cross reference the functions used to this 7.3 manual (possibly page vii/7) to see if they're still used the same.
Hope this helped!
I have an application that uses intricate graph-like structure as a configuration. The application itself resembles a NetGraph- or netfilter firewall, thus graph nodes have types and properties (which correspond to operations) and they're interconnected with directed edges.
I'd like to have an easy-to-user configuration editor for my application that provides visualization and editing for configuration as a graph.
In my dream scenario, application would receive this configuration as a file in one of popular graph formats (for example, TGF, DOT, GraphML, etc), parse it and use.
A few requirements (not really strict, I'm open to consider various options) - graph editor should be:
available to be embedded in web UI - i.e. implemented in Javascript/HTML, Flash or as a Java applet
able to load TGF-style graph (i.e. without layouting instructions, nodes would be without coordinates) and lay it out in a somewhat decent automatically
able to save this graph back
able to load/save using requests to HTTP server, not a file directly
customizable to make it work with strict set of node types (so that user can't just create arbitrary node type or arbitrary properties for a given node)
open-source
So far I've found yEd and it's Flash version, Graphity - both look cool, but they aren't customizable (to strip them to bare-bones functionality, i.e. creation of one a few node types) and not open source, so embedding them anywhere pledges to be somewhat painful.
Another option I'm considering is trashing the whole "visual editor" idea and make user just write down bare TGF or DOT-style definitions in a plain text file and visualize them for later checking using something like GraphViz. Is it a viable way to go?
Have you looked at InfoVis? In particular, the force-directed layout and editing may be applicable. Graph source data is analogous to DOT, albeit in json format. No layout info in the source data though.
EDIT: There's also ProtoVis which is similar.
hth.
I'm trying to write an application that categorizes a certain type of file, music for example, or pictures. As part of the application users would be able to tag items so as to make searching more efficient. These tags could be location and place of a picture, or it could be the camera it was taken with, or even the emotion that a person feels when looking at the picture.
I can foresee that this information would be very useful to the operating system for it's desktop wide searches. That way users would not have to open my application to search for content based on the tags they provide.
I'd like to know what technologies are native to different operating systems/desktop environments. I know of (meta?)tracker for Gnome, and I'd be interested in hearing about equivalent for KDE, Windows and Mac OSX.
For KDE I can point out:
digiKam for images management
amaroK for music
I think they both do what you want. However, I'm not quite sure what is the scope of your question: are you just looking for existing tool for tagging/rating images/music?
Well, this question has been out for a while and I've done research since I asked this question, and here is what I've found.
For KDE there is a component called Strigi, which is required by plasma, and this provides the file tagging and search functionalities along with something called Nepomuk.
Gnome has tracker, which does the same thing, and seems to be a component of the Gnome desktop.
Windows has tagging, but I haven't found out how one can programmatically access the tags on the files, or how generic they are. However it is only possible to tag certain file types, so txt files for example can not be tagged.
As a programmer I have no idea how one would go about programming menus for a DVD, I have heard that this is possible, and even seen basic games using DVD menus - although it may very well be a closed-system. Is it even possible and if so, what language, compilers etc exist for this?
There are a couple of open source projects that can create DVDs plus menus. I recently used dvd-slideshow to create a simple dvd with menus etc. Another one is DVD Styler. All of these programs are basically a front-end for various command-line tools for encoding, menu creation etc. Since these are open source projects you can have a look at the source and check out how they accomplish this.
The DVD menus that appear on a typical movie DVD are described in the DVD-Video standard: wikipedia.
If you are trying to create this type of menu, there are many programs that will create these. I have had luck with DVD Styler.
If you are creating an application that is distributed on a DVD, the choice of programming language is up to you. I suppose you could use some sort of OS auto-start feature to run an application that would bring up a menu for the user.
The WIKI States (in 2011) "
Programming interfaceA virtual machine implemented by the DVD player runs 'bytecode' contained on the DVD. This is used to control playback and display special effects on the menus. The instruction set is called the Virtual Machine (VM) DVD command set. There are 16 general parameter registers (GPRM) to hold temporary values and 24 system parameters (SPRM). As a result of a moderately flexible programming interface, DVD players can be used to play games, such as the DVD re-release of Dragon's Lair, along with more sophisticated and advanced games such as Scene It, all of which can be run on standard DVD players.
Looks like http://dvdauthor.sourceforge.net/ is able to help here since you can use command line interface and feed xml files.
You may need to write a framework which can generate xml files (and other content) from your game authoring tool.